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

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

Modern web uygulamalarında DB darboğazlarını çözmek için Redis ile veri önbelleğe alma ve dağıtık oturum yönetimi uygulama adımları.

S

Sistem Yöneticisi

Kıdemli Yazılım Mimarı

Giriş: Neden Redis?

Veritabanı disk I/O yavaştır. Redis veriyi RAM üzerinde tutar. Okuma ve yazma mikrosaniye sürer. Modern web mimarilerinde dijital ajans projeleri ve yüksek trafikli sistemler bu mimariyi zorunlu kılar. Bu rehber, veri önbellekleme (caching) ve session store kurulumunu adım adım gösterir.

Adım 1: Redis Servisini Başlatma

En hızlı yol Docker kullanmaktır:

docker run --name redis-cache -p 6379:6379 -d redis:alpine --save "" --appendonly no
RAM odaklı cache için persistence kapatıldı. Session veri kaybı kritikse AOF (appendonly yes) aç.

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

En yaygın cache paterni. DB sorgulamadan önce Redis kontrol edilir.

Uygulama Mantığı (Node.js / ioredis):

import Redis from 'ioredis';
const redis = new Redis();

async function getUser(id) {
  const key = `user:${id}`;
  const cached = await redis.get(key);
  if (cached) return JSON.parse(cached);

  const user = await db.users.findById(id);
  if (user) {
    await redis.set(key, JSON.stringify(user), 'EX', 3600); // 1 saat TTL
  }
  return user;
}
  • TTL (Time-to-Live): Zorunludur. TTL verilmezse bellek dolar (OOM).
  • Key Formatı: nesne:id veya servis:alan:id standardı kullan.

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

Monolitik sunucu içi session bellek paylaşımı yapamaz. Yatay ölçeklemede (load balancer arkası) kullanıcı oturumu kaybolur. Redis merkezi session store olur.

Express + Redis Session Entegrasyonu:

import session from 'express-session';
import RedisStore from 'connect-redis';
import Redis from 'ioredis';

const client = new Redis();

app.use(session({
  store: new RedisStore({ client }),
  secret: process.env.SESSION_SECRET,
  resave: false,
  saveUninitialized: false,
  cookie: { secure: true, httpOnly: true, maxAge: 86400000 }
}));

Adım 4: Kritik Optimizasyon ve Trendler

Gelişen trendler doğrultusunda dikkat edilmesi gereken kurallar:

  • Cache Stampede: TTL bittiğinde aynı anda gelen binlerce istek DB'yi çökertir. Çözüm: Mutex lock veya Probabilistic Early Expiration (XFetch).
  • Eviction Policy: redis.conf içinde maxmemory-policy allkeys-lru veya volatile-lru ayarla. RAM dolunca eski veri düşer, sistem çökmez.
  • Boru Hattı (Pipelining): Çoklu sorguları tek round-trip ile gönder. Ağ gecikmesini sıfırla.