IHS Strategic
Tüm Blog Yazıları
HowTo21 Eylül 2026•2 dk okuma

Redis ile Veri Önbelleğe Alma (Caching) ve Oturum Yönetimi Rehberi

Redis kullanarak veri önbellekleme ve merkezi oturum yönetimi uygulama adımları. Modern web mimarilerinde performans artırma, mimari trendler ve dijital strateji pratikleri.

S

Sistem Yöneticisi

Kıdemli Yazılım Mimarı

Giriş: Neden Redis?

Veritabanı yükü yüksek sistemlerde disk I/O darboğaz yaratır. Redis, veriyi RAM üzerinde tutar. Okuma ve yazma işlemlerinde mikrosaniye düzeyinde gecikme sunar. Modern bir dijital strateji için yüksek trafikli sistemlerde Redis önbellekleme ve oturum yönetimi standart çözümdür.

1. Veri Önbelleğe Alma (Caching) Stratejileri

Doğru strateji, veri tutarlılığı ve performans dengesini belirler:

  • Cache-Aside (Lazy Loading): Uygulama önce Redis'e bakar. Veri yoksa (cache miss) veritabanından çeker, Redis'e yazar ve döndürür. En yaygın modeldir.
  • Write-Through: Veri önce cache'e, ardından eşzamanlı veritabanına yazılır. Veri tutarlılığı yüksektir.
  • Write-Behind (Write-Back): Veri cache'e yazılır, veritabanına asenkron aktarılır. Yazma hızı maksimumdur ancak veri kaybı riski taşır.

2. Adım Adım Cache-Aside Uygulaması

En temel ve güvenli önbellekleme mantığı:

async function getProduct(productId) {
  const cacheKey = `product:${productId}`;
  const cached = await redis.get(cacheKey);
  if (cached) return JSON.parse(cached);

  const product = await db.products.findById(productId);
  if (product) {
    await redis.set(cacheKey, JSON.stringify(product), 'EX', 3600); // 1 saat TTL
  }
  return product;
}
Kritik Kural: Tüm anahtarlara kesinlikle TTL (Time to Live) verin. Süresiz anahtarlar bellek şişmesine (OOM) yol açar.

3. Dağıtık Oturum (Session) Yönetimi

Çoklu sunucu mimarisinde (load-balanced) sticky session yerine merkezi Redis oturum deposu kullanılır. Sunuculardan biri çöktüğünde kullanıcı oturumu kaybolmaz.

Uygulama Adımları

  • Kullanıcı giriş yaptığında oturum verisini (UserID, Rol, Metadata) benzersiz bir `sessionId` ile Redis'e kaydedin.
  • `sessionId` değerini HTTP-only, Secure cookie olarak istemciye iletin.
  • Gelen her istekte middleware aracılığıyla `sessionId` değerini Redis'te doğrulayın ve TTL süresini yenileyin (Sliding Expiration).
  • Kullanıcı çıkış yaptığında `redis.del("session:" + sessionId)` çalıştırarak anında geçersiz kılın.

4. Performans ve Trendler: Mimari İpuçları

  • Eviction Policy: RAM dolduğunda Redis'in davranışını belirleyin. `maxmemory-policy allkeys-lru` veya `volatile-lru` seçin.
  • Cache Stampede Önleme: Popüler bir anahtarın TTL süresi bittiğinde aynı anda binlerce isteğin veritabanına vurmasını engellemek için mutex/lock (ör. Redlock) veya asenkron yenileme kullanın.
  • Key İsimlendirme Standardı: Tutarlılık için `[servis]:[nesne]:[id]` formatını izleyin (ör. `auth:session:usr_9921`).