Memcached Kurulumu ve PHP Memcache Kullanımı
Yüksek trafiğe sahip web sunucular, özellikle CRUD işlemlerinin fazla olduğu web sunucular, yüksek trafik sonucunda çok fazla yük altına girecektir. Böyle bir durumda, kod kaynakları yeterince verimli kullanabilecek şekilde yazılmışsa, ağır yük altında hizmet verebilmek için ilk ihtiyaç duyulanlardan biri, bir önbellek mekanizmasıdır.
Memcahced nedir?
Memcached 2003 yılında, alanının ilklerinden olan popüler blog servisi LiveJournal için yazılmış ve sonrasında özellikle web uygulamalarında çokça kullanılmaya başlanmış ücretiz, açık kaynak, yüksek performanslı ve dağıtık bir önbellekleme sistemidir. Basit ama güçlü bir önbellekleme sistemidir. Günümüzde Facebook tarafından aktif olarak kullanılmakta ve geliştirilmesine katkı sunulmaktadır. Yine popüler web uygulama ve servisleri tarafından (Wikipedia, Youtube, Flickr) aktif olarak kullanılmaktadır.
Memcached bir in-memory storedur. Tüm önbellekleme hafıza(ram) üzerindedir. Dolayısıyla kritik verilerin yalnızca memcached üzerinde saklanmaması gerekir. Memcached üzerinde veri, key-value çiftleri olarak saklanır. Memcached özellikle veritabanı işlemlerinin fazla olduğu web uygulamalarında hayat kurtarıcıdır.
Memcached Kurulum
Debian tabanlı Linux dağıtımlarında;
RedHat/Fedora tabanlı Linux dağıtımlarında;
komutu ile Memcached ve Php-Memcached paketleri kolayca kurulabilir. Memcached TCP/IP tabanlıdır. Herhangi iki yazılım arasında memcached ile haberleşme sağlanabilir.
Memcached’i başlatmak için
komutu kullanılabilir. Bu komut ile, 512 MB bir önbellek alanı kullanan, 11211 tcp ve udp portunu dinleyen bir memcached servisi başlatılacaktır. Memcached servisi başlatılırken oluşturulan önbellek alanı sabittir. İşletim sistemi mimarilerindeki bellek yönetimine benzer şekilde, eğer önbellek alanı dolduysa ilk yazılan verinin üzerine yazacaktır. Memcached için x86 sistemlerde maksimum 4GB önbellek alanı tanımlayabilirsiniz.
Memcached başlatıldıktan sonra servisle ilgili daha fazla detay almak için;
komutunu kullanabilirsiniz. Varsayılan olarak, Memcached key uzunlukları 250 karakterdir. Value ise maksimum 1MB olabilir.
PHP Memcached Kullanımı
PHP ile memcached’e bağlanmak için;
Memcached üzerine veri yazmak için;
Memcached üzerindeki bir anahtarın değerine ulaşmak için;
Örnek bir senaryoda, web uygulamamızdaki çok sık değişmeyen bir değer, veritabanında saklanıyor olsun. Sayfa her render edildiğinde veya her api çağrısında bu değerin veritabanından okunması gerekecektir. Biz memcached ile bu değeri her seferinde veritabanından okumak yerine önbellekte tutmak istiyor olalım.
Bu sayede veritabanından dolayı oluşacak disk i/o işlemleri azalacak, doğrudan bellek üzerinden erişilerek performans artışı sağlanabilecektir. Memcached’in doğru implement edilmesi, memcached üzerinde önbelleklenecek verilerin doğru seçilmesi ve yarış durumu oluşturabilecek işlemlerin önceden tespit edilmesi ile web sunucularında oluşabilecek yük azaltılabilecektir.