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

Modern Web için Redis Rehberi: Veri Önbellekleme ve Oturum Yönetimi

Modern web uygulamalarında Redis ile veri önbellekleme (caching) ve merkezi oturum (session) mimarisi kurma adımları. Dijital ajanslar ve mühendisler için pratik performans rehberi.

S

Sistem Yöneticisi

Kıdemli Yazılım Mimarı

Modern Web Mimarilerinde Redis Rolü

Veritabanı I/O maliyeti yüksektir. Yüksek trafikli modern web uygulamalarında disk tabanlı okumalar darboğaz yaratır. Redis, veriyi RAM üzerinde key-value formatında tutar; sub-millisecond yanıt süresi sağlar. Dijital ajans projelerinde ve kurumsal platformlarda ölçeklenebilirlik trendleri, durumsuz (stateless) uygulama sunucuları ve merkezi Redis katmanını zorunlu kılar.

Adım 1: Redis Kurulumu ve Memory Ayarları

Docker ile hızlı kurulum:

docker run -d --name redis-core -p 6379:6379 redis:7-alpine redis-server --maxmemory 512mb --maxmemory-policy allkeys-lru
Kritik Parametre: allkeys-lru politikası bellek dolduğunda en az kullanılan anahtarları otomatik siler. OOM (Out Of Memory) çökmesini engeller.

Adım 2: Cache-Aside (Lazy Loading) Stratejisi Uygulama

En yaygın önbellekleme deseni Cache-Aside modelidir. Akış: Uygulama önce Redis'e bakar. Veri varsa döner (Cache Hit). Yoksa veritabanından okur, Redis'e yazar, yanıtı döner (Cache Miss).

async function getUserProfile(userId) {
  const cacheKey = `user:${userId}`;
  const cached = await redis.get(cacheKey);
  if (cached) return JSON.parse(cached);

  const user = await db.users.findById(userId);
  if (!user) return null;

  await redis.set(cacheKey, JSON.stringify(user), 'EX', 3600); // 1 saat TTL
  return user;
}

Adım 3: Dağıtık Oturum (Session) Yönetimi

Birden fazla web sunucusu (load balancer arkasında) çalıştığında yerel oturum belleği yetersiz kalır. Sticky session kullanmak yerine merkezi Redis session store kurulmalıdır.

  • Token/Session ID: Cookie veya Header içinde taşınır.
  • Session Verisi: Redis üzerinde TTL ile saklanır.
  • Kullanıcı Çıkışı (Logout): Tek bir DEL session:{id} komutu ile tüm sunucularda anında geçersiz kılınır.
// Session kayıt örneği
await redis.set(`session:${sessionId}`, JSON.stringify({ userId: 42, role: 'admin' }), 'EX', 86400);

Önemli Trendler ve Optimizasyon Kuralları

  • Cache Invalidation: Veri güncellendiğinde (UPDATE/DELETE) ilgili Redis anahtarı silinmeli veya güncellenmelidir (Write-Through / Cache Eviction).
  • Key İsimlendirme Standardı: nesne:id:alan hiyerarşisi kullanın (Örn: order:1024:items).
  • Connection Pooling: Her istekte yeni bağlantı açmayın; tek bağlantı havuzunu (connection pool) yeniden kullanın.
  • Hot-key Problemi: Çok yoğun okunan anahtarlar için local in-memory L1 cache (LRU) + Redis L2 cache hibrit mimarisini değerlendirin.