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

Redis ile Veri Önbelleğe Alma ve Oturum Yönetimi: Modern Web Rehberi

Modern web mimarilerinde Redis kullanarak veri önbellekleme (caching) ve dağıtık oturum (session) yönetimini kurma adımları, performans trendleri ve ajans pratikleri.

S

Sistem Yöneticisi

Kıdemli Yazılım Mimarı

Modern Web Geliştirmede Redis Mimarisi

Veritabanı darboğazlarını önlemek, TTFB (Time to First Byte) değerini düşürmek ve yatayda ölçeklenen sunucularda state yönetimini sağlamak için bellek içi (in-memory) veri deposu şarttır. Her dijital ajans ve backend mühendisinin benimsediği güncel trendler, I/O yükünü Redis üzerinde toplamayı gerektirir. Bu rehber, cache-aside modelini ve session store entegrasyonunu adım adım uygular.

Adım 1: Redis Sunucu Kurulumu ve Bağlantı

En yalın kurulum Docker üzerindedir. Ek bağımlılık olmadan container başlatın:

docker run -d --name redis-core -p 6379:6379 redis:alpine --requirepass gizlisifre

Uygulama katmanında singleton bağlantı havuzu açın (Node.js/ioredis örneği):

import Redis from 'ioredis';

export const redis = new Redis({
  host: '127.0.0.1',
  port: 6379,
  password: 'gizlisifre',
  lazyConnect: true
});
await redis.connect();

Adım 2: Cache-Aside (Lazy Loading) Deseni Kurulumu

Veri önce Redis'e sorulur; yoksa DB'den okunur, Redis'e yazılır ve döndürülür.

async function getCachedData(key, fetcher, ttlSeconds = 300) {
  const cached = await redis.get(key);
  if (cached) return JSON.parse(cached);

  const fresh = await fetcher();
  if (fresh) {
    await redis.set(key, JSON.stringify(fresh), 'EX', ttlSeconds);
  }
  return fresh;
}
TTL (Time-To-Live) tanımlanmamış anahtarlar bellek şişmesine (OOM) yol açar. Her kayda son kullanma süresi zorunlu tutulmalıdır.

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

Modern web mimarilerinde birden fazla instance arkasında load balancer çalışır. Kullanıcı state bilgisi sunucu RAM'inde değil, merkezi Redis üzerinde tutulur.

  1. Session ID Üretimi: Kriptografik rastgele token (UUID v4 / nanoid).
  2. Yazma: redis.set(`session:${sessionId}`, JSON.stringify(userData), 'EX', 86400)
  3. Doğrulama Middleware: Gelen HTTP Cookie/Header üzerinden session okunur.
  4. Yıkım (Logout): redis.del(`session:${sessionId}`)

Adım 4: Invalidation ve Bellek Tahliye Stratejileri

Veri güncellendiğinde stale cache oluşmaması için write-through veya explicit purge uygulanır:

  • Veri Güncelleme: DB UPDATE çalışınca ilgili key silinir (redis.del(`product:${id}`)).
  • Eviction Policy: Bellek dolduğunda sistemin kilitlenmemesi için redis.conf içinde politika seçin: maxmemory-policy volatile-lru veya allkeys-lru.