Centos 7'ye PHP Memcached Kurulumu ve Kullanımı

Memcached, öncelikle veritabanlarını yoğun şekilde kullanan siteleri hızlandırmak için kullanılan, dağıtılmış, yüksek performanslı, bellek içi önbellekleme sistemidir. Bunun yanında her türlü bilgiyi saklamak içinde kullanılır. Yoğun işlem gerektiren her projede bu sınıfı kullandığım için bunun kurulumunu CentOS 7 için bahsedeceğim. İlerleyen zamanlarda diğer sistemler için kurulumlarını da paylaşmayı düşünüyorum. Şimdi konumuza dönecek olursak, neredeyse her popüler CMS sistemleri  memcached'den yararlanmak için bir eklenti veya modüle sahiptir çünkü memcached  birçok programlama dili PHP, Perl, Ruby ve Python dahil memcached kütüphanesine sahiptir. Memcached bellekte çalışır ve diske veri yazmak zorunda olmadığından oldukça hızlıdır.

Kurulum Öncesi Bilinmesi Gerekenler;
  • Kurulum sadece CentOS 7 için anlatılmıştır.
  • Bu işlemler için kuracağınız makinada root yetkisine sahip olmalısınız.

Makinedeki var olan güncellemeleri öncellikle bir yapmamız gerekiyor çünkü memcached sunucuzdaki var olan bir kaç bileşeni kullanacağı için sıkıntı yaşamamız gerekiyor.
yum -y update *

Daha sonra makinamıza tek bir komutla memcached için gerekli olan her şeyi kuruyoruz.
yum -y install php-pecl-memcache

Kurulum tamamlandıktan sonra şimdi yazacağımız komutla memcached doğru kurulup kurulmadığını kontrol etmek adına memcached yeniden başlatıyoruz.
systemctl restart memcached

systemctl restart httpd

Daha sonra herseyini düzgün olup olmadığının kontrolü için php'deki kurulu olan modülleri gösteriyoruz.
php -m | grep memcache

Eğer listenen içerisinde memcache görüyor isek başarıyla kurmuşuz demektir.

Şimdi örnek olarak bir anahtar belirleyip bazı değişkenlerimi bellekte tutmayı gösterelim. Ben bu örnek için mySQL'den aldığımız bir veriyi tutmayı gösteriyorum.
# PDO, mySQL Baglantisi

try {
$db = new PDO('mysql:host=localhost;dbname=dbname', 'user', 'pass');
} catch (PDOException $e) {
echo 'Baglanti Hatasi: ' . $e->getMessage();
}

# MemCache ile MemCached Sunucusuna Baglan
$memcache = new Memcache;
$memcache->connect('127.0.0.1', 11211) or die ("Sunucuya Baglanilamiyor...");

# Üyeler tablosuna baglanip statu 1 olanlari listesini aliyoruz
$uyeler = $db->prepare('SELECT * FROM uyeler WHERE statu = :statu');
$uyeler->bindValue(':statu', 1, PDO::PARAM_INT);
$uyeler->execute();
$uyeler->fetchAll(PDO::FETCH_OBJ);

# Bos bir dizi olusturuyoruz
$veriDizisi = [];
foreach ($uyeler as $uye)
{
# Üyelerin kullanici adini döngüde diziye ekliyoruz
$veriDizisi[] = $uye->kullaniciAdi;
}

# MemCache ile Anahtar Belirliyoruz.
# 1800 sn bazindadir ve 30 dk ya denk gelmektedir.
$memcache->set('uyeBilgileri', $veriDizisi, false, 1800);

Çok güzel bir şekilde uyeBilgileri anahtarını belirleyerek memcached içerisinde bir dizi tuttuk. Şimdi bu anahtara ulaşmayıda gösterip yazıyı sonlandırıyorum.
# MemCache ile MemCached Sunucusuna Baglan

$memcache = new Memcache;
$memcache->connect('127.0.0.1', 11211) or die ("Sunucuya Baglanilamiyor...");

# Olusturulan Anahtara Ulasma
$uyeBilgileri = $memcache->get('uyeBilgileri');
if ($uyeBilgileri === true)
print_r($uyeBilgileri);

Ek Not: MemCached sunucunda en fazla veri saklama boyutu 1 MB'dir. Bundan ötürü cok büyük bir veri önbellege alinacak ise set edilirken FALSE degeri TRUE olmalidir.