Gecikme Ekleyen Önbellek
İşleri hızlandırmak için Redis önbelleği ekledik. 50ms gecikme ekledi.
Ne önbelleğe aldık:
- Kullanıcı profili (her istekte değişir)
- Alışveriş sepeti (kullanıcıya özel, geçici)
- Gerçek zamanlı envanter sayıları
Sorun:
- Önbellek isabet oranı: %3
- İsteklerin %97'si: önbellek isabetsizliği + DB sorgusu
- Artı Redis'e ağ gidiş-dönüşü: 2ms
- Artı serileştirme/seri durumdan çıkarma: 5ms
- Net sonuç: önbelleksizden daha yavaş
Ne önbelleğe almalıydık:
- Ürün kataloğu (okuma ağırlıklı, nadiren değişir)
- Kategori ağacı (statik)
- Özellik bayrakları (genel, nadiren değişir)
- Hesaplanmış toplamalar (hesaplanması pahalı)
Önbellek matematiği:
Fayda = (isabet_oranı × db_gecikmesi) - önbellek_maliyeti
Eğer fayda < 0 ise, önbellek size zarar veriyordur
Düzeltilmiş versiyon:
- Geçici verileri önbellekten kaldırdık
- Uzun TTL ile statik içerik ekledik
- İsabet oranı: %3 → %85
- P50 gecikmesi: 150ms → 40ms
Ders: Yazma ağırlıklı, geçici verileri değil, okuma ağırlıklı, nadiren değişen verileri önbelleğe alın.