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

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

Redis kullanarak veri önbelleğe alma (caching) ve dağıtık oturum yönetimini (session management) mimarinize entegre etme adımları.

S

Sistem Yöneticisi

Kıdemli Yazılım Mimarı

1. Redis Mimarisi ve Dijital Strateji

Veritabanı yükü CPU ve disk I/O tüketir. Yanıt süresi artar. Çözüm: RAM tabanlı anahtar-değer deposu Redis. Modern web trendleri düşük gecikme süresi ister. Dijital strateji parçası olarak Redis; DB sorgu sayısını düşürür, yatay ölçeklemeyi basitleştirir.

2. Cache-Aside Deseni ile Veri Önbelleğe Alma

Uygulama önce Redis'e bakar. Veri varsa döner (Cache Hit). Veri yoksa DB'den okur, Redis'e yazar, istemciye döner (Cache Miss).

Adım Adım Cache-Aside Uygulaması (Node.js):

const redis = require('redis');
const client = redis.createClient({ url: 'redis://localhost:6379' });

await client.connect();

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

  // ponytail: DB katmanı temsili, prodüksiyonda gerçek sorgu bağla
  const dbUser = { id, name: 'Test User', role: 'admin' };
  
  // TTL 3600 sn: stale data önler
  await client.set(cacheKey, JSON.stringify(dbUser), { EX: 3600 });
  return dbUser;
}
TTL (Time-To-Live) zorunludur. Bellek şişmesini önler.

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

Stateless API sunucuları session verisini yerel RAM'de tutamaz. Sunucu çökerse oturum düşer. Load balancer arkasında session senkronizasyonu bozulur. Çözüm: Ortak Redis session store.

Express.js ve Redis Session Entegrasyonu:

const session = require('express-session');
const RedisStore = require('connect-redis').default;

app.use(session({
  store: new RedisStore({ client: client, prefix: 'sess:' }),
  secret: process.env.SESSION_SECRET || 'gizli-anahtar',
  resave: false,
  saveUninitialized: false,
  cookie: {
    secure: process.env.NODE_ENV === 'production',
    httpOnly: true,
    maxAge: 86400000 // 1 gün
  }
}));

4. Kritik Yapılandırma ve Trendler

  • Eviction Policy: RAM dolduğunda çöküşü önlemek için maxmemory-policy allkeys-lru veya volatile-lru ayarla.
  • Memory Limit: redis.conf içinde maxmemory 2gb tanımla. Sunucu OS belleğini korur.
  • Key Namespacing: Çakışmaları önlemek için iki nokta kullan: user:100:profile, sess:token123.
  • Pipeline / MGET: Toplu okumada tek tek get çağırma. Ağ RTT gecikmesini kes.