SQL sorgularinin sonuclarini onbellekleme
Query Cache sistemi kurduk. Ayni sorgu tekrar geldiginde veritabanina gitmeden cache'ten cevap donuyor.
"En populer 100 sarki" sorgusu her dakika binlerce kez atiliyor. Hepsine ayni cevap. Neden her seferinde veritabanini yoralim? 5 dakika cache'le, tek sorguyla binlerce isteği karsila.
Sonuc: Veritabani yuku %75 azaldi. Sorgular 100 kat hizlandi.
Ayarlar > Cache > Query Cache
Dashboard > Cache > Query Stats
Dashboard > Cache > Query List
Ayarlar > Performans > Cache TTL
Cache::remember çağrıldığında Laravel önce Redis'te key arar. Bulunursa deserialize edip döner, bulunamazsa closure çalıştırılıp sonuç cache'lenir.
Cache::remember('popular_songs', ...) çağrısı laravel_cache:popular_songs key'ini oluşturur.
RedisStore::get() metodu GET laravel_cache:popular_songs komutunu çalıştırır.
Veri bulunursa unserialize() ile PHP objesine dönüştürülür. DB'ye sorgu atılmaz, ~0.5ms içinde döner.
Veri yoksa ikinci parametre olan closure fn() => Song::popular()->get() çalıştırılır.
Sonuç serialize() edilip SETEX key ttl value komutuyla Redis'e yazılır.
Şarkı güncellendiğinde Model Observer Cache::forget('popular_songs') çağırır. Key Redis'ten silinir.
Sorgu önbelleği. SQL sonuçlarını saklayıp tekrar kullanma.
Laravel'de cache'ten oku, yoksa hesapla ve kaydet.
Cache'i gruplandırma. Toplu temizleme imkanı.
Veri değişince ilgili cache'i geçersiz kılma.