format_list_bulletedBu İçerikte Bahsedilen Konular
- arrow_rightRedis ve Memcached: Dinamik Web Siteleri İçin Hız Optimizasyonu
- arrow_rightİn-Memory Önbellekleme Nedir?
- arrow_rightRedis Nedir ve Nasıl Çalışır?
- arrow_rightRedis'in Temel Özellikleri
- arrow_rightMemcached Nedir ve Nasıl Çalışır?
- arrow_rightMemcached'in Temel Özellikleri
- arrow_rightRedis vs Memcached: Karşılaştırma Tablosu
- arrow_rightHangi Durumda Hangisini Seçmelisiniz?
- arrow_rightDinamik Sitelerde Redis ve Memcached Kullanım Alanları
- arrow_right1. Oturum Yönetimi
- arrow_right2. Veritabanı Sorgu Önbellekleme
- arrow_right3. API Yanıt Önbellekleme
- arrow_right4. Gerçek Zamanlı Uygulamalar
- arrow_rightRedis ve Memcached Kurulumu
- arrow_rightLinux Sunucuda Redis Kurulumu
- arrow_rightRedis Yapılandırması
- arrow_rightMemcached Kurulumu
- arrow_rightMemcached Yapılandırması
- arrow_rightPHP ile Redis ve Memcached Kullanımı
- arrow_rightPHP Redis Bağlantısı
- arrow_rightPHP Memcached Bağlantısı
- arrow_rightWordPress'te Redis ve Memcached Kullanımı
- arrow_rightRedis ile WordPress Object Cache
- arrow_rightMemcached ile WordPress
- arrow_rightÖnbellekleme Stratejileri ve En İyi Uygulamalar
- arrow_right1. Önbellek Süreleri
Redis ve Memcached: Dinamik Web Siteleri İçin Hız Optimizasyonu
Modern web sitelerinin performansı, kullanıcı deneyiminin temel belirleyicilerinden biridir. Araştırmalara göre, bir web sayfasının 3 saniyeden uzun sürede yüklenmesi durumunda kullanıcıların %53'ü siteden ayrılıyor. Bu nedenle dinamik içerik yönetim sistemleri ve yüksek trafikli uygulamalar için Redis ve Memcached gibi in-memory önbellekleme çözümleri kritik önem taşıyor.
Bu kılavuzda, Redis ve Memcached teknolojilerini derinlemesine inceleyecek, hangi durumda hangi çözümü tercih etmeniz gerektiğini açıklayacağız.
İn-Memory Önbellekleme Nedir?
İn-memory önbellekleme, verilerin disk yerine RAM üzerinde depolanmasını sağlayan bir tekniktir. NVMe SSD teknolojileri bile RAM hızına yaklaşamaz çünkü RAM, milisaniye düzeyinde erişim süreleri sunar. Bu sayede veritabanı sorguları, oturum verileri ve sık kullanılan içerikler saniyeler içinde kullanıcıya ulaşır.
Redis Nedir ve Nasıl Çalışır?
Redis (Remote Dictionary Server), açık kaynaklı, in-memory veri yapısı deposudur. String, Hash, List, Set ve Sorted Set gibi çeşitli veri yapılarını destekler. Redis, NoSQL veritabanı olarak da kullanılabilir ve pub/sub mesajlaşma sistemi ile gerçek zamanlı uygulamalar için idealdir.
Redis'in Temel Özellikleri
- Veri Kalıcılığı: Redis, AOF (Append Only File) ve RDB snapshot özellikleriyle verileri diske kaydedebilir
- Replikasyon: Master-slave mimarisi ile yüksek kullanılabilirlik sağlar
- Atomic İşlemler: Tüm işlemler atomik olarak gerçekleştirilir, veri tutarlılığı garanti altındadır
- Cluster Desteği: Yatay ölçekleme ile milyonlarca isteği karşılayabilir
Oyun sunucuları başta olmak üzere birçok real-time uygulama Redis tercih ediyor. Özellikle FiveM sunucu ve Unturned sunucu altyapılarında Redis, oyuncu verileri ve oturum yönetimi için yaygın olarak kullanılıyor.
Memcached Nedir ve Nasıl Çalışır?
Memcached, basit ve hafif bir in-memory önbellekleme sistemidir. İlk olarak 2003 yılında LiveJournal tarafından geliştirilmiştir. Redis'ten farklı olarak sadece string türünde veri depolayabilir ve daha basit bir mimariye sahiptir.
Memcached'in Temel Özellikleri
- Basitlik: Kurulumu ve yapılandırması oldukça kolaydır
- Minimal Kaynak Kullanımı: Daha az bellek ayak izi bırakır
- Dağıtık Mimari: Birden fazla sunucu arasında verileri otomatik olarak dağıtır
- LRU (Least Recently Used): Bellek dolduğunda en az kullanılan verileri otomatik olarak siler
Redis vs Memcached: Karşılaştırma Tablosu
| Özellik | Redis | Memcached |
|---|---|---|
| Veri Türleri | String, Hash, List, Set, Sorted Set | Yalnızca String |
| Kalıcılık | Evet (RDB, AOF) | Hayır |
| Replikasyon | Master-Slave | Yok |
| Transaction Desteği | Evet (MULTI/EXEC) | Sınırlı |
| Pub/Sub | Evet | Hayır |
| Disk Yazma | Asenkron | Yok |
| 临 Bellek Kullanımı | Daha yüksek | Daha düşük |
| Ölçekleme | Cluster desteği |
Hangi Durumda Hangisini Seçmelisiniz?
Redis tercih edin:
- Karmaşık veri yapılarına ihtiyacınız varsa
- Veri kalıcılığı önemliyse
- Pub/Sub mesajlaşma sistemi kullanacaksanız
- Gerçek zamanlı analitik veya leaderboard sistemleri kuracaksanız
Memcached tercih edin:
- Sadece basit önbellekleme yapacaksanız
- Kaynak kullanımını minimize etmek istiyorsanız
- Hızlı ve basit bir çözüm arıyorsanız
- Oturum depolama gibi basit string verileri saklayacaksanız
Dinamik Sitelerde Redis ve Memcached Kullanım Alanları
1. Oturum Yönetimi
Web uygulamalarında kullanıcı oturumları, her istekte veritabanına sorgu atılmasını gerektirir. Redis veya Memcached kullanarak oturum verilerini RAM'de tutmak, oturum açma işlemlerini 100 kata kadar hızlandırabilir. WordPress hosting çözümlerinde bu yöntem özellikle etkilidir.
2. Veritabanı Sorgu Önbellekleme
Sık tekrarlanan SQL sorgularının sonuçlarını önbelleğe almak, veritabanı yükünü önemli ölçüde azaltır. Örneğin, bir e-ticaret sitesindeki ürün kategorileri veya en çok satan ürünler listesi Redis ile önbelleğe alınabilir. E-ticaret hosting projelerinde bu yaklaşım satış dönemlerinde kritik önem taşır.
3. API Yanıt Önbellekleme
REST API'lerin dönüştürdüğü JSON yanıtları, belirli bir süre boyunca önbelleğe alınarak sunucu yükü azaltılır. Özellikle harici entegrasyonlarda (ödeme sistemleri, kargo API'leri) bu yöntem kullanılır.
4. Gerçek Zamanlı Uygulamalar
Redis'in pub/sub özelliği, canlı sohbet uygulamaları, bildirim sistemleri ve gerçek zamanlı işbirliği araçları için mükemmel bir altyapı sunar.
Redis ve Memcached Kurulumu
Linux Sunucuda Redis Kurulumu
# Ubuntu/Debian
sudo apt update
sudo apt install redis-server
# CentOS/RHEL
sudo yum install redis
# Servisi başlatma
sudo systemctl start redis
sudo systemctl enable redis
Redis Yapılandırması
# redis.conf temel ayarlar
maxmemory 2gb
maxmemory-policy allkeys-lru
save 900 1
save 300 10
save 60 10000
bind 127.0.0.1
port 6379
Bu yapılandırma, Redis'in 2GB bellek kullanmasına izin verir ve bellek dolduğunda en az kullanılan anahtarları otomatik olarak siler. Linux sunucu altyapılarında Redis kurulumu oldukça basittir.
Memcached Kurulumu
# Ubuntu/Debian
sudo apt install memcached libmemcached-tools
# CentOS/RHEL
sudo yum install memcached
# Servisi başlatma
sudo systemctl start memcached
sudo systemctl enable memcached
Memcached Yapılandırması
# /etc/memcached.conf
-m 1024
-p 11211
-u memcached
-l 127.0.0.1
-c 1024
Bu ayar, Memcached'in 1GB bellek kullanmasını ve maksimum 1024 eşzamanlı bağlantıyı desteklemesini sağlar.
PHP ile Redis ve Memcached Kullanımı
PHP Redis Bağlantısı
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
// Veri ekleme
$redis->set('user:123', json_encode(['name' => 'Ahmet', 'email' => '[email protected]']));
// Veri okuma
$user = json_decode($redis->get('user:123'), true);
// Süreli önbellekleme
$redis->setex('cache:products', 3600, json_encode($products));
PHP Memcached Bağlantısı
$memcached = new Memcached();
$memcached->addServer('127.0.0.1', 11211);
// Veri ekleme
$memcached->set('user:123', json_encode(['name' => 'Ahmet', 'email' => '[email protected]']), 3600);
// Veri okuma
$user = json_decode($memcached->get('user:123'), true);
WordPress'te Redis ve Memcached Kullanımı
WordPress siteleri, veritabanı yoğun yapıları nedeniyle önbellekleme çözümlerinden büyük fayda sağlar. LiteSpeed vs Nginx karşılaştırmasında olduğu gibi, önbellekleme katmanları eklemek performansı önemli ölçüde artırır.
Redis ile WordPress Object Cache
WordPress'te Redis kullanmak için Redis Object Cache eklentisini yükleyin:
# wp-config.php ayarı
define('WP_REDIS_HOST', '127.0.0.1');
define('WP_REDIS_PORT', '6379');
define('WP_REDIS_DATABASE', '0');
define('WP_REDIS_TIMEOUT', '1');
define('WP_REDIS_READ_TIMEOUT', '1');
Memcached ile WordPress
Memcached kullanmak için W3 Total Cache eklentisi veya Batcache eklentisi kullanılabilir. Her iki çözüm de WordPress'in veritabanı sorgu sayısını önemli ölçüde azaltır.
Önbellekleme Stratejileri ve En İyi Uygulamalar
1. Önbellek Süreleri
Farklı içerik türleri için farklı önbellek süreleri belirleyin:
- Statik içerik: 24-72 saat
- Ürün sayfaları: 1-4 saat
- Kullanıcı prof