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

Redis ile Veri Önbelleğe Alma ve Oturum Yönetimi: Adım Adım Rehber

Redis ile caching ve oturum yönetimi uygulama adımları. Modern dijital strateji ve mimari trendler odaklı teknik rehber.

S

Sistem Yöneticisi

Kıdemli Yazılım Mimarı

Giriş: Redis Neden Seçilmeli?

Disk I/O darboğazını çözmek için RAM tabanlı veri yapıları gerekir. Redis, alt milisaniye gecikme süresi sağlar. Modern dijital strateji gereği veritabanı yükü azaltılmalı, istek yanıt süreleri düşürülmelidir.

Veritabanına her istek atmak kaynak israfıdır. Sık okunan, nadir değişen veri bellekte tutulmalıdır.

Adım 1: Redis Başlatma ve Temel Yapılandırma

Hızlı dağıtım için Docker kullanın:

docker run -d --name redis-stack -p 6379:6379 -p 8001:8001 redis/redis-stack:latest

Temel ayar kontrolü:

  • maxmemory: Sunucu RAM sınırını belirler (örn: maxmemory 2gb).
  • maxmemory-policy: Bellek dolunca silme kuralı. Caching için allkeys-lru önerilir.

Adım 2: Cache-Aside Deseni ile Veri Önbelleğe Alma

Veri önce Redis içinde aranır (Cache Hit). Yoksa veritabanından çekilir ve Redis'e yazılır (Cache Miss).

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

  const product = await db.products.findById(id);
  if (product) {
    await redis.set(cacheKey, JSON.stringify(product), 'EX', 3600);
  }
  return product;
}

Kritik Kural: Tüm anahtarlara TTL (Time-To-Live) tanımlayın. Süresiz anahtar bellek sızıntısına yol açar.

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

Yatayda ölçeklenen web sunucularında yerel oturum tutulamaz. Oturum verisi merkezi Redis örneğine taşınır. Kullanıcı herhangi bir sunucuya bağlandığında oturum kaybolmaz.

Uygulama Adımları

  • Oturum Kimliği (Session ID): İstemci çerezinde saklanır.
  • Oturum Verisi: Redis içinde hash veya string formatında tutulur.
  • Otomatik Süre Yenileme: Kullanıcı her istek attığında oturum TTL değeri güncellenir.
// Express ve connect-redis oturum örneği
const session = require('express-session');
const RedisStore = require('connect-redis').default;

app.use(session({
  store: new RedisStore({ client: redisClient, prefix: 'sess:' }),
  secret: 'guclu-gizli-anahtar',
  resave: false,
  saveUninitialized: false,
  cookie: { secure: true, httpOnly: true, maxAge: 86400000 }
}));

Modern Trendler ve Dikkat Edilmesi Gerekenler

Yüksek trafikli sistemlerde mimari trendler takip edilmelidir:

  • Cache Stampede / Dog-piling: Popüler bir anahtarın süresi dolduğunda binlerce isteğin aynı anda DB'ye gitmesi. Çözüm: Dağıtık kilit (Redlock) veya olasılıksal erken yenileme (XFetch).
  • Redis Sentinel ve Cluster: Yüksek erişilebilirlik (HA) ve otomatik yük devretme (failover) için tek düğüm yerine Cluster kurulumu kullanın.
  • Veri Kalıcılığı (Persistence): Caching için RDB/AOF kapatılabilir; ancak oturum yönetimi için RDB anlık görüntüleri açık bırakılmalıdır.

Sonuç

Bu rehber adımları uygulandığında veritabanı sorgu yükü %80'e kadar azalır. Merkezi oturum yönetimiyle yatay ölçekleme sorunsuz çalışır.