Sunucu İçi Önbellekleme: Redis, Memcached, Varnish ve Opcode Cache Rehberi
Sunucu İçi Önbellekleme: Redis, Memcached, Varnish ve Opcode Cache Rehberi
Son Güncelleme: Mayıs 2026
Bu makalede sunucu içi önbellekleme (server-side caching) katmanlarının nasıl çalıştığını, Redis, Memcached, Varnish ve Opcode Cache gibi popüler çözümlerin farklarını ve hangi senaryoda hangisinin tercih edilmesi gerektiğini öğreneceksiniz. Makale boyunca pratik kurulum, konfigürasyon örnekleri ve gerçek dünyadan kullanım senaryoları bulacaksınız.
İçindekiler
- Giriş
- Redis Nedir?
- Memcached Nedir?
- Varnish Nedir?
- Opcode Cache (Önbellek) Nedir?
- Karşılaştırma Tablosu
- Kurulum ve Örnek Konfigürasyonlar
- En İyi Uygulamalar
- Sıkça Sorulan Sorular
- Sonuç
Giriş
Önbellekleme (cache) sunucu ve uygulama performansını artırmanın temel yollarından biridir. Burada anlatılan çözümler farklı problem setlerine yönelik olup; bellek içi önbellek (in-memory cache), HTTP reverse proxy önbelleği ve opcode önbelleği (derlenmiş PHP kodunun saklanması) olarak üç ana kategoriye ayrılır. Her bir teknik, veri türüne, erişim sıklığına ve tutarlılık (consistency) gereksinimlerine göre avantaj sağlar.
Redis Nedir?
Tanım ve Temel Özellikler
Redis (Remote Dictionary Server) bellek içi anahtar-değer veritabanıdır. Yüksek performanslı okuma/yazma işlemleri için tasarlanmıştır ve kalıcılık (persistence) seçenekleri sayesinde veriyi diske de yazabilir. Redis, TTL (time-to-live) yani anahtar yaşam süresi desteği ile kısa süreli önbellekleme için ideal bir çözümdür.
Kullanım Senaryoları
- Oturum Yönetimi: Kullanıcı oturumlarını (sessions) merkezi ve hızlı bir şekilde saklama.
- Sayaç ve Kuyruklar: Gerçek zamanlı sayaçlar, pub/sub ve iş kuyruğu (queue) uygulamaları.
- Cache Katmanı: Veri tabanı sorgularının sonuçlarını önbelleğe alarak RPS (requests per second) artırma.
Memcached Nedir?
Tanım ve Temel Özellikler
Memcached hafif bir bellek içi anahtar-değer önbelleğidir. Basit API'si ve düşük gecikmesi (latency) ile sık erişilen verilerin kısa süreli saklanması için uygundur. Memcached kalıcılık sunmaz; sunucu yeniden başlatıldığında veri kaybolur. Bu yüzden volatile (uçucu) önbellek senaryolarında tercih edilir.
Kullanım Senaryoları
- Sayfa Parçaları: Dinamik sayfa bölümlerinin (fragment) önbelleklemesi.
- DB Sorgu Sonuçları: Ağır sorgu sonuçlarının geçici olarak saklanması.
- Basit Anahtar-Değer: Oturum dışı, kısa ömürlü veri saklama.
Varnish Nedir?
Tanım ve Temel Özellikler
Varnish bir HTTP reverse proxy önbelleğidir. Web sunucusu (origin) ile kullanıcı (client) arasına yerleştirilir ve HTTP yanıtlarını önbelleğe alarak statik ve dinamik içerik için büyük performans kazanımları sağlar. Varnish Configuration Language (VCL) ile kuralları özelleştirebilirsiniz.
Kullanım Senaryoları
- Statik İçerik Önbellekleme: CSS, JS, resim ve sayfa çıktılarının önbelleklemesi.
- Yük Dengeleme: Basit istek yönlendirme ve sağlık kontrolü.
- Cache Invalidasyon: İçerik değiştiğinde Varnish’i temizleme (purge) işlemleri.
Opcode Cache (Önbellek) Nedir?
Tanım ve Temel Özellikler
Opcode Cache (ör. PHP Opcache), PHP gibi yorumlanan dillerde kaynak kodun derlenmiş ara kodunu (opcode) bellekte tutarak her istekte tekrar derlemeyi engeller. Bu, CPU kullanımını azaltır ve uygulama tepki süresini iyileştirir.
PHP için Örnek Ayar
; php.ini içinde önerilen opcache ayarları
opcache.enable=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000
opcache.revalidate_freq=2
Karşılaştırma Tablosu
| Özellik | Redis | Memcached | Varnish | Opcode Cache |
|---|---|---|---|---|
| Tip | In-memory DB | In-memory KV Cache | HTTP Reverse Proxy | Dil Seviyesi Opcode ÖnBellek |
| Kalıcılık | Evet (opsiyonel) | Hayır | Hayır (HTTP yanıtı önbelleklenir) | Hayır (geçici) |
| Veri Yapıları | String, List, Set, Hash, Sorted Set | Sadece String (KV) | HTTP Response | Derlenmiş PHP kodu |
| En İyi Kullanım | Gerçek zamanlı veri, kuyruk, oturum | Basit cache, fragment caching | Sayfa cache, CDN alternatifi/öncüsü | PHP uygulamaları için genel hız artışı |
Kurulum ve Örnek Konfigürasyonlar
Redis (Ubuntu) Hızlı Kurulum
sudo apt update
sudo apt install -y redis-server
sudo systemctl enable --now redis-server
# redis-cli ile test
redis-cli ping
Not: Redis’in production ortamında requirepass veya ACL kullanarak erişimi kısıtlayın ve mümkünse sadece özel ağ (private network) ile erişime açın.
Memcached (Ubuntu) Kurulum
sudo apt update
sudo apt install -y memcached libmemcached-tools
sudo systemctl enable --now memcached
# memcached-tool ile stats
memcached-tool 127.0.0.1:11211 stats
Varnish Basit VCL Örneği
vcl 4.0;
backend default { .host = "127.0.0.1"; .port = "8080"; }
sub vcl_recv {
if (req.method == "PURGE") {
return (synth(200, "Purged"));
}
}
Konsepte dikkat: Varnish doğrudan HTTPS dinlemez; TLS sonlandırmayı nginx veya bir load balancer üzerinde yapıp Varnish’e HTTP ile yönlendirirsiniz.
PHP ile Redis Kullanımı (Örnek)
connect('127.0.0.1', 6379);
$redis->setex('user_count', 60, 123);
echo $redis->get('user_count');
En İyi Uygulamalar
- Çok Katmanlı Önbellek: Opcode cache + in-memory cache (Redis/Memcached) + HTTP cache (Varnish/CDN) kombinasyonu en iyi sonuçları verir.
- TTL Stratejisi: Anahtarların yaşam süresini uygulama ihtiyaçlarına göre belirleyin; çok uzun TTL stale (bayat) veri yaratır.
- Cache Invalidation: İçerik değişiminde uygun invalidasyon (purge) mekanizması kurun. Varnish için
banveyapurge, Redis için anahtar silme işlemi kullanın. - Gözlemleme ve İzleme: Hit/Miss oranlarını, bellek kullanımını ve gecikmeyi (latency) izleyin. Prometheus, Grafana gibi araçlarla metrik toplayın.
- Güvenlik: Cache sunucularını doğrudan internete açmayın; yalnızca uygulama sunucularından erişim izni verin.
Sıkça Sorulan Sorular
Redis mi Memcached mi seçmeliyim?
Genel kural: Veri yapıları, kalıcılık veya gelişmiş işlevsellik (pub/sub, liste, set) gerekiyorsa Redis; basit, düşük gecikmeli KV cache gerekiyorsa Memcached tercih edilir.
Varnish her web sitesi için gerekli mi?
Hayır. Eğer siteniz çoğunlukla API çağrıları yapıyorsa veya dinamik, kişiselleştirilmiş içerik yoğun ise Varnish’in faydası sınırlı olabilir. Ancak statik/dinamik karışımı sitelerde büyük performans artışı sağlar.
Opcode cache ile Redis aynı işi yapar mı?
Hayır. Opcode cache uygulama kodunun derlenmiş halini saklarken, Redis uygulama verisini (ör. sorgu sonucu, oturum) saklar. İkisi birbirini tamamlar.
Cache tutarlılığı (consistency) nasıl sağlanır?
Write-through, write-behind veya explicit invalidation stratejileri kullanın. Kritik veriler için önbellek yerine doğrudan veritabanı kullanmak daha güvenlidir.
Cache sunucularını Corelux altyapısında hangi hizmetle kullanmalıyım?
Gelişmiş cache ihtiyaçları için Türkiye VPS Sunucu veya yüksek performans gerektiren durumlarda Bulut Sunucu tercih edebilirsiniz. Uygulama odaklı yönetilen çözümler için Coolify Hosting hizmetlerine göz atın.
Sonuç
Doğru önbellekleme stratejisi performansı ve maliyeti doğrudan etkiler. Genellikle en iyi sonuç opcode cache + in-memory cache (Redis/Memcached) + HTTP cache (Varnish/CDN) kombinasyonundan elde edilir. Kurulum ve ölçeklendirme ihtiyaçlarınıza göre Türkiye VPS, Bulut Sunucu veya Coolify Hosting çözümlerimizden faydalanabilirsiniz.
Eğer profesyonel destek isterseniz Corelux Hizmetler sayfamız üzerinden SSL, Yedekleme ve diğer yönetim hizmetleri hakkında bilgi alabilirsiniz.
Yazar
Boran BAR