Önbellek nesnelerini geçersiz kılmak / güncellemek için daha iyi bir yaklaşımın ne olacağını bilmek istiyorum.
Ön şartlar
- Uzaktan memcached sunucusuna sahip olmak (birden fazla uygulama için önbellek görevi gören)
- Tüm sunucular azure tarafından barındırılıyor (yakın ilgi alanları, aynı veri merkezleri)
- Önbellek nesnesi boyutu 200 bayt ile 50 kilobayt arasında değişir
Yaklaşım 1 (en kısa sürede önbellekte sakla)
- Nesne A oluşturulur -> veritabanında sakla ve önbellekte sakla
- İstemci tarafından talep edilen A nesnesi -> önbelleğin varlığını kontrol et, aksi takdirde veritabanından getir ve önbellekte sakla
- A nesnesi güncellenir -> veritabanında sakla, önbellekte sakla
Yaklaşım 1 daha açık görünüyor. Bir şey oluşturulursa, önbelleğe en kısa sürede koyun. Ne olursa olsun birisinin buna ihtiyacı olacak.
Yaklaşım 2 (tembel önbellek deposu)
- A nesnesi oluşturulur -> veritabanında sakla
- İstemci tarafından talep edilen A nesnesi -> önbelleğin varlığını kontrol et, aksi takdirde veritabanından getir ve önbellekte sakla
- A nesnesi güncellenir -> veritabanında depola, önbellekteki anahtarı sil
Yaklaşım 2 daha fazla bellek farkında gibi görünüyor. Bu yaklaşımda yalnızca istenen öğeler önbelleğe gider.
Soru 1: Performans göz önünde bulundurulduğunda, daha iyi bir yaklaşım ne olabilir? Bellek veya CPU henüz sayılmaz.
Soru 2: Düşüncelerim bir tür erken optimizasyon mu?
Soru 3: Başka düşünceniz var mı? Diğer yaklaşımlar?