Laravel 5: Önbellek (Cache)

Yapılandırma

laravel çeşitli önbellek (cache) sistemleri için birleşik bir API sunar. Önbellek yapılandırması config/cache.php dosyasındadır. Bu dosyada uygulamanız botunca varsayılan olarak kullanmak istediğiniz önbellek sürücüsünü tanımlayabilirsiniz. Laravel popüler önbellekleme sistemlerinde Memcache ve Redis destekler.

Önbellek yapılandırma dosyası dosyanın içinde açıklanan başka ayarlar da içerir. Laravel varsayılan olarak dosya sisteminde önbelleklenmiş olarak saklanan file önbellek sürücüsünü kullanmak için yapılandırılmıştır. Büyük uygulamarlar için Memcached, APC gibi sistem belleğinde saklananlar önerilir.

Önbellek Gereksinimleri

Database

database önbellek sürücüsü kullanıldığınıldığında, bir tablo oluşturmaya ihtiyacısnız vardır. Tablo tanımlası için aşağıda bir önel bulacaksınız.

Memcached

Memcached kullanmak için Memcached PECL paketinin yüklü olması gerekir.

Varsayılan olarak TCP/IP tabanlı yapılandırma kullanılır.

host seçeneğini bir UNIX soket yolu olarak da ayarlayabilirsiniz. Bunu yaparsanız, post değeri 0 olamlıdır:

Redis

Redis önbelleği laravel ile kulannamadan önce Composer ile predis/predis paketini (~1.0) yüklemeniz gerekir.

Önbellek Kullanma

Bir Önbellek Örneği Oluşturma

Illuminate\Contracts\Cache\Factory ve Illuminate\Contracts\Cache\Repository anlaşmaları Laravel’in önbellek servislerine erişimi sağlar. Factory anlaşması uygulamanız için tanımlanan tüm cache sürücülerine erişimi sağlar. Repository anlaşması ise cache yapılandırma dosyanızda belirtilen varsayılan önbellek sürücüsünün bir uygulanlasıdır.

Örnek için, bir kontrlcüye Cache dahil edelim.

Çoklu Önbellek Saklama

Cache facade kullanarak, store metodu yoluyla şekitli önbellek saklamalarına erişebilirsiniz. strore metoduna geçirilen anahtar, cache yayapılandırma dosyanızdaki stores dizisinde listelenen saklamalardan birine karşılık gelir.

Öğelerin Önbellekten Getirilmesi

Önbellekten öğeleri getirmek için Cache facade üzerindeki get metodu kullanılır. Öğe önbellekte yoksa null döndürücektir. Dilersniz get metoduna ikinci bir argünam belirterek öğe bulunamadığında döndürülmesini istediğiniz varsayılan değeri belirtebilirsiniz:

Varsayılan değer olarak isimsiz fonksiyon da geçirebilirsiniz. Belirtilen öğe önbellekte bulunamazsa isimsiz fonksiyon döndürülecektir.

Öğenin Varlığının Kontrol Edilmesi

has metodu bir öğenin önbellekte olup olmadığını belirlemek için kullanılılır.

Değerleri Arttıtma / Azaltma

increment, decrement metodları önbellekteki tamsayı değerlerinin değerlerini ayarlamak için kullanılır. Her iki metod da isteğe bağlı, arttırma ve azaltma değerini belirten ikinci argüman kabul eder:

Alma veya Güncelleme

Bazen bir öğeyi bellekten getirmek istersiniz, fakat istenen öğe mecut değilse bir varsayılan bir değer de saklamak istersiniz. Örneğin, önbellekten tüm kullanıcıları getirmek istediniz, mevcut değilse veritabanından alıp önbelleğe eklemek istediniz. Cache::remember metodunu kullanarak bunu yaabilirsiniz:

Öğe önbellekte mevcut değilse, remember metoduna isimsiz bir fonksiyon geçirilerek icra edilir ve sonucu önbelleğe konur:

Ayrıca remember ve forever metodlarını birleştirebilirsiniz.

Alma veya Silme

Bir öğeyi önbellekten alıp daha sonra da silmek isterseniz pull metodunu kullanabilirsini<. get metodu gibi, öğe önbellekte yoksa null döndürülür.

Öğeleri Önbellekte Saklama

Öğeleri önbellekte saklamak için Cache facade put metodunu kullanabilirsiniz. Cache bir öğe koyduğunuzda, değerin ne kadar dakika saklanacağını belirmelisiniz:

Öğenin ne kadar süre saklanacağını dakika sayısını geçirmek yerine, önbellekleniş öğenin bitişini gösteren PHP Datetime örneği geçirebilirsiniz.

add metodu yalnızca öğe önbellekte saklanmıyorsa önbelleğe ekler. Öğe önbelelleğe eklendirğinde metod true döner. Diğer türlü metod false döner:

forever metodu öğeyi önbellete kalıcı olarak saklamak için kullanılır. Bu değeri forget metodu kulllanılarak elle kaldırmanız gerekir.

Öğerleri Önbellekten Kaldırma

Öğeleri önbellekten Cache facade forget metodunu kullanarak kaldırabilirsiniz.

Özel Önbellek Sürücüsü Ekleme

Laravel önbelleğini özel bir sürücü ile gelişletmek için Cache facade extend metodunu kullanacağız. Bu servis sağlayıcıyla yapılabilir.

Örneğin, “mongo” isimli yeni bir önbellek sürücüsü kaydetmek için: