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

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

Modern web uygulamalarında Redis ile yüksek performanslı veri önbelleğe alma (caching) ve ölçeklenebilir oturum (session) yönetimi rehberi.

S

Sistem Yöneticisi

Kıdemli Yazılım Mimarı

Modern Web Mimarilerinde Redis: Temel Avantajlar

Veritabanı disk I/O darboğaz yaratır. Redis RAM üzerinde çalışır, milisaniye altı gecikme sunar. Yüksek trafik alan dijital ajans projelerinde sorgu yükünü düşürür. Oturum verilerini merkezi tutar, yatay ölçekleme sağlar.

Adım 1: Redis Kurulum ve Bağlantı Kurma

Redis sunucu ayağa kaldırılır. Minimal istemci bağlanır:

npm install ioredis
const Redis = require('ioredis');
const redis = new Redis({ host: '127.0.0.1', port: 6379 });

redis.on('error', (err) => console.error('Redis Hata:', err));
// ponytail: Tekil Redis instance. Cluster veya Sentinel ihtiyacı trafik büyüyünce ekle.

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

Veri önce önbellekte aranır. Varsa döndürülür (Cache Hit). Yoksa veritabanından okunur, önbelleğe yazılır ve TTL (yaşam süresi) verilir (Cache Miss).

async function getProduct(productId) {
  const cacheKey = `product:${productId}`;
  const cachedData = await redis.get(cacheKey);

  if (cachedData) {
    return JSON.parse(cachedData);
  }

  const dbData = await db.query('SELECT * FROM products WHERE id = ?', [productId]);
  if (dbData) {
    await redis.set(cacheKey, JSON.stringify(dbData), 'EX', 3600);
  }
  return dbData;
}
// skipped: Dog-piling / stampede protection, add when QPS > 1000.

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

Stateless API ve mikroservis trendleri gereği oturumlar tek sunucu belleğinde tutulamaz. Redis merkezi oturum deposu olarak yapılandırılır.

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

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

Performans ve Bellek Yönetimi Trendleri

  • TTL Zorunluluğu: Tüm anahtarlara son kullanma süresi tanımlanır. Bellek şişmesi önlenir.
  • Eviction Policy: redis.conf içinde maxmemory-policy allkeys-lru veya volatile-lru ayarlanır.
  • Key Namespacing: Anahtarlar nesne:id:alan (ör. user:102:profile) formatında adlandırılır. Kolay taranır ve temizlenir.

Uyarı: Hassas kullanıcı verileri şifrelenmeden önbelleğe yazılmaz. Redis default portu dış internete açık bırakılmaz, parola (AUTH) ve TLS zorunlu tutulur.