Redis Nedir? Redis Cache, Pub/Sub, RDB, AOF ve Angular & Node.js Entegrasyonu
Bu yazıda Redis nedir, cache stratejileri, Pub/Sub mesajlaşma, RDB & AOF veri kalıcılığı ve Angular & Node.js ile Redis entegrasyonu konularını adım adım öğreniyoruz.
Redis Nedir ve Ne İşe Yarar?
Redis (Remote Dictionary Server), RAM üzerinde çalışan in-memory veri yapısı sunucusudur.
Milisaniye seviyesinde erişim süresi sayesinde yüksek trafikli uygulamalarda performansı ciddi şekilde artırır.
Kullanım Alanları
- Web & API cache
- Gerçek zamanlı bildirim sistemleri
- JWT ve session yönetimi
- Oyun ve leaderboard sistemleri
- E-ticaret (stok, sepet)
- Analitik ve metrik toplama
Redis Cache Stratejileri
Redis cache, sık kullanılan verileri bellekte tutarak veritabanı yükünü azaltır ve API performansını artırır.
1. Cache-aside (Lazy Loading)
- Önce cache kontrol edilir
- Veri yoksa DB’den çekilir
- Cache’e yazılır
- Sonraki istekler cache’ten gelir
2. TTL (Time To Live)
TTL, verinin cache’te ne kadar süre tutulacağını belirler.
3. Cache Invalidation
Veri güncellendiğinde cache temizlenmelidir.
DEL post:123
Temel Redis Komutları
SET post:123 "data" EX 300
GET post:123
DEL post:123
Redis Server ve Sentinel
Redis tek başına kullanıldığında single point of failure oluşturabilir.
- Sentinel: Otomatik failover
- Cluster: Yatay ölçekleme
redis-server /etc/redis/redis.conf
systemctl start redis
RDB ve AOF Nedir?
| Yöntem | Avantaj | Dezavantaj |
|---|---|---|
| RDB | Hızlı, az disk kullanır | Veri kaybı olabilir |
| AOF | Veri güvenli | Daha fazla disk kullanır |
Redis Pub/Sub
Pub/Sub modeli ile mesajlar anlık olarak tüm abonelere iletilir.
- Chat uygulamaları
- Canlı bildirimler
- Dashboard sistemleri
PUBLISH kanal "Merhaba"
SUBSCRIBE kanal
Node.js & Angular ile Redis Kullanımı
Angular doğrudan Redis’e bağlanmaz. Arada bir backend (Node.js) bulunur.
Node.js Redis Örneği
const redis = createClient();
app.get("/api/profile/:id", async (req, res) => {
const key = `profile:${req.params.id}`;
let data = await redis.get(key);
if (!data) {
data = JSON.stringify({ id: 1, name: "Ada" });
await redis.setEx(key, 300, data);
}
res.json(JSON.parse(data));
});
Angular Servis
getProfile(id: string) {
return this.http.get(`/api/profile/${id}`);
}
Redis Performans İpuçları
- TTL doğru ayarla
- Doğru veri tipini kullan
- Cache invalidation uygula
- Cluster kullan
- RAM kullanımını izle
- Gereksiz key temizle
- MONITOR’u production’da dikkatli kullan
Sık Sorulan Sorular
Redis nedir?
RAM tabanlı hızlı veri deposudur.
Redis cache nedir?
Sık kullanılan verilerin bellekte tutulmasıdır.
RDB vs AOF?
RDB hızlı, AOF daha güvenlidir.
Angular Redis kullanır mı?
Hayır, backend üzerinden kullanır.