Merhaba Webkolog takipçileri!
Bugün sizlere web uygulamalarınızın performansını artırmak ve veritabanı yükünü azaltmak için harika bir araçtan bahsedeceğim: Memcache. Özellikle yoğun trafiğe sahip sitelerde veritabanından sürekli veri çekmek, hem sunucu kaynaklarını tüketir hem de sayfa yükleme sürelerini uzatır. İşte tam bu noktada Memcache, veritabanı sonuçlarını önbelleğe alarak imdadımıza yetişiyor.
Neden Memcache Kullanmalıyız?
En temel sebebi hız ve veritabanı trafiğini azaltmaktır. Sıkça erişilen verileri bellekte tutarak, her seferinde veritabanına sorgu göndermek yerine çok daha hızlı bir şekilde bu verilere ulaşabiliriz. Memcache, varsayılan olarak en fazla 1MB veriyi önbelleğe alır. Daha büyük veriler otomatik olarak kırpılır. Önbelleğe alınan her veri için bir takma isim tanımlanır ve bu takma isim en fazla 250 karakterden oluşabilir.
Memcache Kurulumu
Linux İçin Kurulum
Linux tabanlı sistemlerde Memcached kurulumu oldukça basittir. Kullandığınız dağıtıma göre aşağıdaki komutları kullanabilirsiniz:
- Ubuntu için:
sudo apt-get install memcached
- Gentoo için:
sudo emerge install memcached
- Redhat için:
sudo yum install memcached
Memcached sunucusunu kurduktan sonra PHP için Memcache eklentisini aktif etmemiz gerekiyor:
sudo apt-get install php5-memcache
Windows İçin Kurulum
Windows üzerinde Memcache kurulumu biraz daha farklıdır:
- Öncelikle Memcache'in PHP eklentisini indirmeniz gerekiyor. Güncel sürümleri pecl.php.net/package/memcache adresinden bulabilirsiniz.
- İndirdiğiniz zip dosyasından php_memcache.dll dosyasını PHP kurulumunuzdaki
ext
dizinine (örneğinC:/AppServ/php5/ext
) kopyalayın. - Modülü etkinleştirmek için php.ini dosyanızı açın ve aşağıdaki satırı ekleyin:
extension = php_memcache.dll
- Ardından Memcached sunucusunu indirmeniz gerekiyor. Bu adresten indirebilirsiniz.
- İndirdiğiniz dosyaları
C:/memcached
gibi bir dizine çıkartın. - Komut İstemi'ni (CMD) yönetici olarak açın ve aşağıdaki komutları sırasıyla girin:
Bu komutlar Memcached servisini kurup başlatacaktır.c:/memcached/memcached.exe -d install C:/memcached/memcached.exe -d start
- Son olarak Apache veya kullandığınız web sunucusunu yeniden başlatmanız gerekiyor.
PHP ile Memcache Kullanımı
Memcache'i PHP uygulamalarınızda kullanmak için temel fonksiyonları bilmeniz yeterli. İşte sıkça kullanılan Memcache fonksiyonları ve parametreleri:
Temel Fonksiyonlar
bool Memcache::set ( string $key , mixed $var [, int $flag [, int $expire ]] )
: Yeni bir veriyi önbelleğe eklemek veya mevcut bir veriyi güncellemek için kullanılır.bool Memcache::add ( string $key , mixed $var [, int $flag [, int $expire ]] )
: Belirtilen anahtara sahip bir veri yoksa ekler. Eğer varsafalse
döner.bool Memcache::replace ( string $key , mixed $var [, int $flag [, int $expire ]] )
: Mevcut bir veriyi güncellemek için kullanılır. Belirtilen anahtara sahip bir veri yoksafalse
döner.string Memcache::get ( string $key [, int &$flags ] )
veyaarray Memcache::get ( array $keys [, array &$flags ] )
: Önbellekten veri okumak için kullanılır.bool Memcache::delete ( string $key [, int $timeout = 0 ] )
: Önbellekteki belirli bir veriyi silmek için kullanılır.
Parametrelerin Anlamları
$key
: Verinin önbellekte hangi isimle saklanacağını belirtir.$var
: Önbelleğe alınacak veriyi (string, array, object vb.) temsil eder.$flag
: Sıkıştırma kullanılacaksaMEMCACHE_COMPRESSED
veya1
kullanılır. Varsayılan olarak0
'dır. Sıkıştırmayı Zlib kütüphanesi ile yapar.$expire
: Verinin önbellekte ne kadar süreyle kalacağını saniye cinsinden belirtir. Varsayılan olarak0
'dır, bu da verinin manuel olarak silinene kadar önbellekte kalacağı anlamına gelir. En fazla2592000
(30 gün) değeri girilebilir.
Örnek Kullanım (Nesne Yönelimli API)
İşte Memcache'i bir sınıf olarak nasıl kullanabileceğimize dair basit bir örnek:
$memcache = new Memcache;
$memcache->connect("127.0.0.1","11211") or die("Memcache'ye bağlanılamıyor!");
$isim = "Ali";
// "isim" anahtarıyla "Ali" değerini 100 saniye süreyle önbelleğe ekle
$memcache->set("isim", $isim, false, 100);
// "isim" anahtarına sahip veriyi oku
$okunan_isim = $memcache->get("isim");
echo "Önbellekten okunan isim: " . $okunan_isim . "
"; // Çıktı: Önbellekten okunan isim: Ali
// "isim" anahtarına sahip veriyi "Veli" olarak güncelle ve 30 saniye süreyle tut
$memcache->replace("isim", "Veli", false, 30);
$guncel_isim = $memcache->get("isim");
echo "Güncellenen isim: " . $guncel_isim . "
"; // Çıktı: Güncellenen isim: Veli
// "isim" anahtarıyla tekrar veri eklemeye çalış (zaten var olduğu için false döner)
$ekleme_sonuc = $memcache->add("isim", "Ayşe", false, 100);
if (!$ekleme_sonuc) {
echo "Hata: 'isim' anahtarı zaten mevcut olduğu için eklenemedi.
";
}
// "isim" anahtarına sahip veriyi sil
$silme_sonuc = $memcache->delete("isim");
if ($silme_sonuc) {
echo "'isim' anahtarı başarıyla silindi.
";
}
// Tüm verileri kalıcı olarak temizle
// $memcache->flush();
// Memcache sunucusu ile bağlantıyı kapat
$memcache->close();
Örnek Kullanım (Prosedürel API)
Memcache'i prosedürel olarak da kullanabilirsiniz:
$memcache = memcache_connect('127.0.0.1', 11211);
// "anahtar" anahtarıyla "değer" değerini 30 saniye süreyle önbelleğe ekle
memcache_set($memcache, 'anahtar', 'değer', 0, 30);
// "anahtar" anahtarına sahip veriyi oku
$degisken = memcache_get($memcache, 'anahtar');
echo "Okunan değer: " . $degisken . "
";
// "anahtar" anahtarına sahip veri yoksa ekle
$ekleme_durumu = memcache_add($memcache, 'yeni_anahtar', 'yeni_değer', 0, 60);
// "anahtar" anahtarına sahip veriyi güncelle
memcache_replace($memcache, 'anahtar', 'yeni_güncel_değer', 0, 30);
// Memcache sunucusu ile bağlantıyı kapat
memcache_close($memcache);
Gördüğünüz gibi, Memcache sayesinde veritabanı sorgularınızı önemli ölçüde azaltabilir, böylece web uygulamanızın daha hızlı ve daha verimli çalışmasını sağlayabilirsiniz. Özellikle dinamik içerikli, sık güncellenmeyen verileri önbelleğe alarak büyük bir performans artışı elde edersiniz.
Umarım bu makale Memcache'i anlamanıza ve projelerinizde kullanmaya başlamanıza yardımcı olmuştur. Unutmayın, performansı optimize etmek her zaman üzerinde durulması gereken önemli bir konudur.
Webkolog'u takipte kalın!
Hepinize bol kodlu ve başarılı projeler dilerim!
0 yorum:
Yorum Gönder