Kullanım senaryonuza göre optimum redis.conf parametrelerini hesaplar. maxmemory, eviction policy, persistence ve bağlantı ayarları için kopyalamaya hazır yapılandırma üretir.
$ redis-cli info memory | grep -E 'used_memory_human|maxmemory_human|mem_fragmentation_ratio'
$ redis-cli info stats | grep -E 'evicted_keys|keyspace_hits|keyspace_misses'
$ redis-cli info keyspace # Veritabanı ve anahtar sayısı
$ redis-cli info clients | grep connected # Aktif bağlantı sayısı
free -m ile öğrenin.
Toplam RAM’in %25-50’si önerilir.
Eviction policy ve persistence ayarlarını etkiler.
Cache için persistence genellikle gerekmez.
PHP-FPM max_children değerine yakın tutun.
0 = asla kapatma. Boşta bağlantılar için 300 önerilir.
Mümkünse localhost ile sınırlayın.
Redis Yapılandırması Rehberi
Redis, bellek içi (in-memory) veri yapısı deposudur. Saniyede milyonlarca okuma/yazma işlemi yapabilir. WordPress Object Cache, session yönetimi, queue ve pub/sub gibi çok farklı amaçlar için kullanılır. Her kullanım amacı farklı bir yapılandırma gerektirir.
Temel Hesaplama Notları
maxmemory = Redis için ayrılan RAM (toplam RAM'in %25-50'si) maxmemory-policy = Cache: allkeys-lru | Session: noeviction | Queue: noeviction Gerçek kullanım = maxmemory + overhead (~%10-20 fragmentation) tcp-backlog = Düşük trafik: 128 | Yüksek trafik: 511 hz = Cache: 10 | Yüksek bağlantı: 20-100
allkeys-lru — Cache için Önerilen
Bellek dolduğunda en uzun süredir kullanılmayan anahtarı siler. Tüm anahtarlara uygulanır. WordPress Object Cache gibi saf cache kullanımları için idealdir.
noeviction — Session / Queue için
Bellek dolduğunda yeni yazma işlemlerini reddeder, hata döner. Session veya queue gibi veri kaybının kabul edilemez olduğu durumlarda kullanın.
volatile-lru — TTL’li Anahtarlar
Sadece TTL (expire) tanımlı anahtarlar arasından en az kullanılanı siler. Hem kalıcı hem geçici veri saklıyorsanız tercih edin. Kalıcı veriler silinmez.
allkeys-lfu — Redis 4.0+
En az sıklıkla kullanılan anahtarı siler (LRU: en uzun süre önce, LFU: en az sayıda kullanılan). Tekrar eden erişim patternlerinde LRU’dan daha iyi sonuç verir.
RDB — Periyodik Snapshot
Belirli aralıklarla tüm veriyi diske yazar. Kompakt dosya boyutu ve hızlı yeniden başlatma sağlar. Cache için yeterlidir. Son snapshot’tan bu yana yazılan veriler kaybolabilir.
AOF — Append Only File
Her yazma işlemini log dosyasına ekler. Çok daha güvenli ama daha yavaş. appendfsync everysec ile saniyede 1 veri kaybı riskiyle makul performans elde edilir.
Persistence Kapalı
Cache kullanımı için en iyi seçenek. Disk I/O olmadan maksimum hız. Redis yeniden başladığında veriler sıfırlanır — bu cache için tamamen normaldir.
RDB + AOF (Hybrid)
Redis 4.0+ ile AOF başlangıçta RDB snapshot kullanır. Hem hızlı yeniden başlatma hem de minimum veri kaybı sağlar. Kritik veriler için tercih edin.
| Parametre | Açıklama | Önerilen |
|---|---|---|
| maxmemory | Redis’in kullanabileceği maksimum bellek. Aşılınca eviction policy devreye girer. | RAM’in %25-50’si |
| maxmemory-policy | Bellek dolduğunda hangi anahtarların silineceğini belirler. | allkeys-lru (cache) |
| maxclients | Eş zamanlı maksimum istemci sayısı. Aşılınca yeni bağlantılar reddedilir. | 100 – 500 |
| timeout | Boşta kalan bağlantının kaç saniye sonra kapatılacağı. 0 = asla. | 300 |
| tcp-keepalive | Ölü bağlantıları tespit etmek için TCP keepalive süresi. | 300 |
| hz | Arka plan görevlerinin (expire, eviction) saniyedeki çalışma sıklığı. | 10 – 100 |
| activerehashing | Hash tablosunu arka planda yeniden düzenler. CPU karşılığında bellek tasarrufu. | yes |
| lazyfree-lazy-eviction | Redis 4.0+: Silme işlemlerini arka planda yapar. Ana thread’i bloke etmez. | yes |
$ redis-cli monitor # Anlık komutları izle (dikkatli kullanın)
$ redis-cli --latency # Gecikme testi
$ redis-cli --stat # Sürekli istatistik akışı
$ redis-cli info all | grep -E 'hit|miss|evict|memory'
vm.overcommit_memory = 1 olmasını önerir. Aksi hâlde RDB snapshot sırasında hata alabilirsiniz: sysctl vm.overcommit_memory=1 ve kalıcı yapmak için /etc/sysctl.conf dosyasına ekleyin.
WP_CACHE = true tanımı gerekir. maxmemory-policy olarak allkeys-lru seçin ve persistence’ı kapatın — WordPress cache verisi kaybolsa bile otomatik yeniden oluşturulur.