Bir nesne önbelleği, işin SONUCUNU bellekte tutar ki bir sonraki istek onu yinelemesin. Veritabanına her sayfada aynı soruları soran bir sitede etkisi büyüktür. Sayfaları başka sebeplerle yavaş olan bir sitede ise hiçbir şeydir.
Ne zaman işe yarar
- Her istekte onlarca ayar satırı yükleyen bir içerik sistemi - WordPress seçeneklerini istisnasız her sayfada sorar.
- Menüler, sınıflandırmalar, kullanıcı üstverisi: küçük, yinelenen, birebir aynı.
- Oturumlar; yoksa diskte binlerce küçük dosyaya dönüşürler.
Ne zaman yaramaz
Büyük bir tablo üzerindeki TEK bir sorgu yüzünden yavaş olan bir sayfa tıpatıp aynı yavaşlıkta kalır. Önbellek yinelenen işi kurtarır, pahalı işi değil. Önce sorguyu düzeltin; onu önbelleğe almak yalnızca ne kadar kötü olduğunu gizler - önbellek soğuyana kadar.
Bir bellek sınırı ve bir tahliye ilkesi koyun
maxmemory 256mb
maxmemory-policy allkeys-lru
maxmemory olmadan Redis, makinede bellek kalmayana kadar büyür ve o zaman çekirdek bir şeyi öldürür - çoğu kez veritabanını. allkeys-lru ise bunun yerine en uzun süredir kullanılmayan anahtarı atar; bir önbelleğin yapması gereken de budur.
Onu localhost'a bağlayın
Redis'te varsayılan olarak kimlik doğrulama yoktur. İnternetten erişilebilen bir Redis açık bir kapıdır: ona dosya yazdırılabilir. 127.0.0.1'e bağlayın ve bir parola şart koşun.
bind 127.0.0.1
requirepass a-long-random-string
Gerçekten kullanılıp kullanılmadığını denetleyin
redis-cli info stats | grep -E "keyspace_hits|keyspace_misses"
İsabetlerin ıskalardan çok yüksek olması, çalıştığı anlamına gelir. Iskaların ağır basması ise anahtarların fazla hızlı süresinin dolduğunu ya da bir şeyin her istekte önbelleği boşalttığını gösterir.
Sayfa önbelleği ile nesne önbelleği ayrı şeylerdir. Sayfa önbelleği bitmiş bir sayfanın tamamını sunar ve adsız ziyaretçilere yarar; nesne önbelleği ise sayfaları paylaşılamayan, oturum açmış ziyaretçilere yarar.