Memcache Nedir?
Memcache, yüksek trafikli web sitelerinin sıklıkla başvurduğu tampon bellek kullanma sisteminin adıdır. Facebook yazılım mühendisleri tarafından geliştirilmeye devam ediliyor. Şu an dünya ölçeğinde Memcache en etkin kullanan web sitesi doğal olarak facebook'tur.

Memcache Neden kullanılıyor?
Bu sorunun en az 2 cevabı var diyebiliriz:
1- Ram fiyatları, işlemci fiyatlarından daha ucuzdur. (Sunucu yükünü azaltmak için)
2- Ram bellekler, hardisklerden daha hızlı veri okurlar. (Performans için)

Herkes Memcache kullanabilir mi?
Share hosting'de barındırılan bir siteniz varsa %99 paylaşımlı sunucu hizmetini aldığınız yer sunucuya Memcache modülünü kurmamıştır.

Share Hosting Paketlerinde Neden Memcache Modülü kurmuyorlar?
Memcache Ram bellek üzerinde işlem yapar. Eğer hosting firması share hosting sunucusuna kurarsa, kodlama konusunda acemi bir müşteri
sunucu Ram belleklerinin anasını ağlatabilir. Diğer müşteriler mağdur olurlar. Risk almak istemedikleri için share hosting hizmeti aldığınız yerde Memcache kurulu değildir.

Kendime ait Sunucum var Memcache kurmalı mıyım?
Yüksek hit alan siteniz var, CPU kullanımınız yüksek ise, sayfanız daha hızlı açılsın istiyorsanız kesinlikle kurmalısınız.

Memcache Nasıl kurulur.
"İnsanlar linux'un daha iyi olduğunu bilir ama uygulamalarını Windows ortamında geliştirir" felsefesine katılan biri olarak, Windows 7 işletim sistemi yüklü bilgisayarınıza nasıl kurulum yapılacağını kısaca anlatmak istiyorum. Yazdığınız uygulamayı memcache ile entegreyi localhostunuzda tamamlayın, sunucunuza zaten hosting firması kurulum yapar.

indirmemiz gereken 2 dosya var.
1.ci dosyamız php extension için gerekli olan dll dosyası.
Eğer bilgisayarınızda php 5.3.x varsa buradan
Eğer bilgisayarınızda php 5.2.x varsa özellikle appserv vs kullananlar için dll dosyası buradan

2.ci Memcached.exe dosyası buradan

Memcached.rar dosyasını c:\memcached\ klasörüne açın.
c:\memcached klasörünün içinde Shift + sağ click mouse yapıp açılan menüden komut penceresini burada aç bölümünü seçelim. (cmd.exe açmanın kısayolu)

Önce şu kodu:
memcached.exe -d install
Sonra şu komutu yazın:
memcached.exe -d start
Sonraki işlem adımımız:

indirdiğimiz dll dosyasını php extension klasörüne kopyalamak. Appserv kullananlar için:
D:\AppServ\php5\ext\ yada siz nereye kurduysanız içine kopyalayın.
Daha sonra C:\WINDOWS\php.ini dosyasına extension=php_memcache.dll satırı varsa önündeki noktalı virgülü kaldırın.
extension=php_memcache.dll satırı yoksa bunu ekleyin.

Apache reboot edince kurulum tamamlanmış olacaktır. Bilgisayarı reboot ederseniz daha iyi olur tabii.

Artık uygulamaya geçebiliriz.
Php'nin Memcache komutları gözünüzde büyüttüğünüz kadar zor degil. Php'nin memcache ile alakalı 19 parametresi var ama bize lazım olan
5 parametresi yada şöyle diyeyim bu 5 parametre her işimizi görüyor. Hatta 4 diyelim. Bu 4 parametre ile çok güzel işler çıkartabiliriz.
Bilmemiz gereken parametreler:
1-connect () //memcache sunucusuna bağlanmaya yarar
2- set() // Ram belleğe veri yazmaya yarar
3-get() //Ram bellekteki veriyi okumaya yarar.
4-flush() // işi biten tüm veriyi sildirir.
5-close() // bunu kullanmamakta hata vermez ama yinede bilmek gerekli.

Hangi parametre Ne işe yarar örneklendirelim.
<?
$bellek=new Memcache;
$bellek->connect("127.0.0.1",11211);
?>

Bilmemiz gerekenler. memcache.default_port 11211'dir.
Bu örnek tüm Memcache komutlarını öğreten en basit örnek.
<? 
$bellek=new Memcache;
$bellek->connect("127.0.0.1",11211);
$dizi=array('ali','veli','deli','selim');
$bellek->set("isim",$dizi,0,10);
$yeni= $bellek->get("isim");
$bellek->close();
print_r($yeni);
?>
Kod açıklaması:
Set() komutu ile dizi değişkenimizin tamamını isim şeklinde paketleyip ram belleğe gönderiyoruz. 0 parametresi veri sıkıştırılsın mı parametresidir. 1 yaparsanız zlip kütüphanesi ile sıkıştırılır. 10 parametresi Ram bellekte kaç saniye kalacağını gösterir.
get() komutu ile ram bellekten verimizi çağırıyoruz.
close() parametresi ile memcache bağlantısını kapatıyoruz.

Memcache kullanımı bu kadar basittir. Asıl performansını mysql sorgularında verir. Onu da basit bir örnek ile açıklayayım.

$sorgu = mysql_query("SELECT * FROM makaleler ");
$sonuc = mysql_fetch_array($sorgu);
$bellek->set("isim",$sonuc,0,600);
$yeni= $bellek->get("isim");
$bellek->close();
print_r($yeni);
Bu şekilde bir kod yapısı ile sitenize gelen her ziyaretçi için mysql_query oluşturulmaz. Veriler sizin belirlediğiniz zaman dilimi boyunca ram'dan okunup ziyaretçiye gönderilir. CPU kullanımınız yarı yarıya düşer.
<?
$bellek=new Memcache;
$bellek->connect("127.0.0.1",11211);
$yeni= $bellek->get("isim");

if($yeni)
{ 
echo "Sorgu sonucu ram bellekten okundu";
}
else {
mysql_connect( "localhost", "root", "root" ) ;

mysql_select_db('makaleler');
$sorgu = mysql_query("SELECT * FROM makaleler ");

$sonuc = mysql_fetch_array($sorgu);

$bellek->set("isim",$sonuc,0,600);
}
?>
Repleri görelim devamı gelecek