Redis ile Veri Önbelleğe Alma (Caching) ve Oturum Yönetimi
Redis ile Veri Önbelleğe Alma (Caching) ve Oturum Yönetimi
Sistem Yöneticisi
Kıdemli Yazılım Mimarı
{ "title": "Redis ile Veri Önbelleğe Alma ve Oturum Yönetimi Rehberi", "slug": "redis-ile-veri-onbellege-alma-ve-oturum-yonetimi", "summary": "Redis kullanarak veri önbelleğe alma (caching) ve dağıtık oturum (session) yönetimini adım adım uygulayın. Modern mimariler için yüksek performanslı dijital strateji rehberi.", "content": "
Giriş: Yüksek Performans İçin Redis
Veritabanı darboğazları sistemleri yavaşlatır. Redis, veriyi RAM üzerinde anahtar-değer (in-memory key-value) formatında tutar. Okuma ve yazma gecikmesini milisaniyenin altına indirir. Modern web mimarilerinde veri önbellekleme ve durumsuz (stateless) sunucular için merkezi oturum saklama standardıdır.
1. Adım: Redis Kurulumu ve Bağlantı
Hızlı ve izole kurulum için Docker tercih edilir:
docker run --name redis-cache -p 6379:6379 -d redis:alpine --maxmemory 256mb --maxmemory-policy allkeys-lrumaxmemory-policy allkeys-lru: Bellek dolunca en az kullanılan anahtarları siler. Bellek taşmasını önler.
2. Adım: Veri Önbelleğe Alma (Cache-Aside Pattern)
En yaygın dijital strateji: Cache-Aside deseni. Uygulama veriyi önce Redis içinde arar. Bulursa döner (cache hit). Bulamazsa (cache miss) veritabanından çeker, Redis'e yazar ve yanıt verir.
Uygulama Adımları:
- Anahtar İsimlendirme: Standart format belirleyin:
entity:id(Örn:user:1042). - TTL (Time-to-Live) Belirleme: Sonsuz veri birikimini önlemek için her anahtara yaşam süresi verin.
- Invalidation: Veri güncellendiğinde ilgili anahtarı bellekten silin (
DEL user:1042).
Örnek Akış (Node.js):
async function getUser(id) {
const cacheKey = `user:${id}`;
const cached = await redis.get(cacheKey);
if (cached) return JSON.parse(cached);
const user = await db.users.findById(id);
await redis.set(cacheKey, JSON.stringify(user), 'EX', 3600); // 1 saat TTL
return user;
}3. Adım: Dağıtık Oturum (Session) Yönetimi
Birden fazla web sunucusu (load balancer arkasında) çalıştığında, oturum verisi yerel bellekte saklanamaz. Redis oturum verisini merkezi hale getirir.
- Kullanıcı giriş yapar: Oturum ID üretilir (Session Token).
- Kullanıcı durumu Redis'e yazılır:
session:TOKEN_ID -> { userId, role, ip }. - İstek geldiğinde token doğrulanır, oturum süresi uzatılır (Sliding Expiration).
- Kullanıcı çıkış yaptığında token anahtarı silinir.
Performans ve Bellek Trendleri
Modern sistem mimarilerinde öne çıkan güncel trendler:
- Redis Streams: Oturum hareketlerini ve analitik logları kuyruğa alma.
- Redis Sentinel / Cluster: Yüksek erişilebilirlik (HA) ve otomatik yük dağıtımı.
- Cache Stampede Koruması: TTL dolduğunda aynı anda binlerce isteğin DB'ye vurmasını önlemek için lock mekanizması (Redlock).
Özet Kontrol Listesi
", "schema_type": "HowTo", "suggested_tags": [ "redis", "rehber", "caching", "session-management", "trendler", "dijital strateji", "backend" ] }1. Bellek sınırı ve tahliye politikası (LRU) ayarlandı mı?
2. Tüm önbellek anahtarlarına TTL verildi mi?
3. Veritabanı yazma işlemlerinde cache invalidation tetikleniyor mu?
4. Oturum token'ları şifreli ve güvenli bağlantı (TLS) üzerinden mi iletiliyor?