HowTo13 Eylül 2026•2 dk okuma
Redis ile Veri Önbelleğe Alma ve Oturum Yönetimi Uygulama Rehberi
Redis kullanarak veri önbelleğe alma (caching) ve dağıtık oturum yönetimini (session management) mimarinize entegre etme adımları.
S
Sistem Yöneticisi
Kıdemli Yazılım Mimarı
1. Redis Mimarisi ve Dijital Strateji
Veritabanı yükü CPU ve disk I/O tüketir. Yanıt süresi artar. Çözüm: RAM tabanlı anahtar-değer deposu Redis. Modern web trendleri düşük gecikme süresi ister. Dijital strateji parçası olarak Redis; DB sorgu sayısını düşürür, yatay ölçeklemeyi basitleştirir.
2. Cache-Aside Deseni ile Veri Önbelleğe Alma
Uygulama önce Redis'e bakar. Veri varsa döner (Cache Hit). Veri yoksa DB'den okur, Redis'e yazar, istemciye döner (Cache Miss).
Adım Adım Cache-Aside Uygulaması (Node.js):
const redis = require('redis');
const client = redis.createClient({ url: 'redis://localhost:6379' });
await client.connect();
async function getUser(id) {
const cacheKey = `user:${id}`;
const cached = await client.get(cacheKey);
if (cached) return JSON.parse(cached);
// ponytail: DB katmanı temsili, prodüksiyonda gerçek sorgu bağla
const dbUser = { id, name: 'Test User', role: 'admin' };
// TTL 3600 sn: stale data önler
await client.set(cacheKey, JSON.stringify(dbUser), { EX: 3600 });
return dbUser;
}TTL (Time-To-Live) zorunludur. Bellek şişmesini önler.
3. Dağıtık Oturum Yönetimi (Session Store)
Stateless API sunucuları session verisini yerel RAM'de tutamaz. Sunucu çökerse oturum düşer. Load balancer arkasında session senkronizasyonu bozulur. Çözüm: Ortak Redis session store.
Express.js ve Redis Session Entegrasyonu:
const session = require('express-session');
const RedisStore = require('connect-redis').default;
app.use(session({
store: new RedisStore({ client: client, prefix: 'sess:' }),
secret: process.env.SESSION_SECRET || 'gizli-anahtar',
resave: false,
saveUninitialized: false,
cookie: {
secure: process.env.NODE_ENV === 'production',
httpOnly: true,
maxAge: 86400000 // 1 gün
}
}));4. Kritik Yapılandırma ve Trendler
- Eviction Policy: RAM dolduğunda çöküşü önlemek için
maxmemory-policy allkeys-lruveyavolatile-lruayarla. - Memory Limit:
redis.confiçindemaxmemory 2gbtanımla. Sunucu OS belleğini korur. - Key Namespacing: Çakışmaları önlemek için iki nokta kullan:
user:100:profile,sess:token123. - Pipeline / MGET: Toplu okumada tek tek get çağırma. Ağ RTT gecikmesini kes.