Memcached Kurulumu ve PHP Entegrasyonu: Ubuntu
Ubuntu'da Memcached kurulumu, PHP memcached extension ve WordPress object cache entegrasyonu ile performans artırma.
Memcached Nedir?
Memcached, yüksek performanslı, dağıtık bellek tabanlı bir nesne önbelleği sistemidir. Veritabanı sorgularının, API yanıtlarının ve hesaplama sonuçlarının RAM'de saklanmasını sağlayarak sunucu yükünü önemli ölçüde azaltır. Facebook, Wikipedia ve YouTube gibi büyük ölçekli platformlar Memcached'i milyarlarca istek için kullanmaktadır.
Redis ile karşılaştırıldığında Memcached daha basit ve saf bir önbellekleme çözümüdür: kalıcılık (persistence), replikasyon veya veri tipleri desteği sunmaz; ancak sadece önbellekleme yapılacaksa daha az kaynak kullanır. WordPress, Drupal ve Laravel ile kolayca entegre edilebilir.
Ubuntu 22.04'te Memcached Kurulumu
sudo apt update
sudo apt install memcached libmemcached-tools -y
sudo systemctl start memcached
sudo systemctl enable memcached
sudo systemctl status memcached
Memcached Yapılandırması
sudo nano /etc/memcached.conf
-d # Daemon modunda çalış
-m 256 # 256MB bellek kullan
-p 11211 # Port
-u memcache # Kullanıcı
-l 127.0.0.1 # Sadece localhost (güvenlik için)
-c 1024 # Maksimum bağlantı sayısı
-t 4 # Thread sayısı (CPU çekirdeği kadar)
-I 5m # Maksimum item boyutu 5MB
sudo systemctl restart memcached
PHP Memcached Extension Kurulumu
sudo apt install php8.1-memcached -y
sudo systemctl restart php8.1-fpm
# Kurulumu doğrula:
php -m | grep memcached
PHP ile Memcached Kullanımı
<?php
// Memcached bağlantısı
$mc = new Memcached();
$mc->addServer('127.0.0.1', 11211);
// Değer saklama (TTL: 1 saat = 3600 saniye)
$mc->set('kullanici_123', ['ad' => 'Ahmet', 'email' => 'ahmet@example.com'], 3600);
// Değer okuma
$kullanici = $mc->get('kullanici_123');
if ($mc->getResultCode() === Memcached::RES_NOTFOUND) {
// Önbellekte yok, veritabanından al
$kullanici = getKullaniciBD(123);
$mc->set('kullanici_123', $kullanici, 3600);
}
// Değer silme
$mc->delete('kullanici_123');
// Tüm önbelleği temizle (DİKKATLİ KULLANIN)
$mc->flush();
?>
Veritabanı Sorgusu Önbellekleme Örneği
<?php
function getYazilar(PDO $db, Memcached $mc): array {
$cacheKey = 'yazilar_listesi';
$yazilar = $mc->get($cacheKey);
if ($mc->getResultCode() === Memcached::RES_NOTFOUND) {
$stmt = $db->query("SELECT * FROM posts ORDER BY created_at DESC LIMIT 20");
$yazilar = $stmt->fetchAll(PDO::FETCH_ASSOC);
$mc->set($cacheKey, $yazilar, 300); // 5 dakika önbellekle
}
return $yazilar;
}
?>
WordPress ile Object Cache Entegrasyonu
WordPress için W3 Total Cache veya direkt object-cache.php ile Memcached kullanılabilir:
# W3 Total Cache eklentisini kur (WordPress admin'den)
# Genel Ayarlar > Object Cache: Memcached seç
# Server: 127.0.0.1:11211
# Veya manuel object-cache.php
sudo nano /var/www/wordpress/wp-content/object-cache.php
<?php
// Basit WordPress Memcached Object Cache
$mc = new Memcached();
$mc->addServer('127.0.0.1', 11211);
// wp_cache_add, wp_cache_get, wp_cache_set fonksiyonlarını tanımlayın
?>
Laravel ile Memcached Cache Driver
# .env dosyasında:
CACHE_DRIVER=memcached
MEMCACHED_HOST=127.0.0.1
MEMCACHED_PORT=11211
# config/cache.php içinde memcached sunucuları:
'memcached' => [
'driver' => 'memcached',
'persistent_id' => env('MEMCACHED_PERSISTENT_ID'),
'servers' => [
[
'host' => env('MEMCACHED_HOST', '127.0.0.1'),
'port' => env('MEMCACHED_PORT', 11211),
'weight' => 100,
],
],
],
# Laravel'de kullanım:
Cache::put('anahtar', 'deger', 3600);
$deger = Cache::get('anahtar');
Cache::forget('anahtar');
Memcached Durumunu İzleme
# memcstat ile temel istatistikler
memcstat --servers=127.0.0.1:11211
# Telnet ile bağlanma
telnet localhost 11211
stats
stats items
stats slabs
quit
Sık Karşılaşılan Sorunlar
Bağlantı Reddedildi
sudo systemctl status memcached
sudo netstat -tlnp | grep 11211
# Sadece 127.0.0.1'den bağlanabildiğinizden emin olun
PHP Extension Yüklenmedi
php -m | grep memcach
# Eğer yoksa:
sudo apt install php8.1-memcached
sudo systemctl restart php8.1-fpm nginx
Sonuç
Ubuntu 22.04'te Memcached kurulumu, PHP entegrasyonu ve WordPress/Laravel ile kullanımını öğrendiniz. Veritabanı sorgularını ve hesaplama sonuçlarını RAM'de önbellekleyerek sunucu yanıt sürelerini dramatik biçimde azaltabilirsiniz.
Yorumlar
Henüz yorum yok. İlk yorumu siz yapın!