İş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.


← Alınan Derslere Dön