Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Redis Önbellek Sunucusunu Optimize Etme: Bellek Politikaları ve Kalıcılık (Persistence) Ayarları

devster

Üye
Katılım
14 Mart 2026
Mesajlar
23
Merhaba arkadaşlar, bugün sizlere Redis sunucularınızın performansını ve güvenilirliğini artırmak için kritik öneme sahip iki konuyu, bellek yönetimini ve kalıcılık (persistence) ayarlarını nasıl optimize edeceğinizi anlatacağım. Doğru yapılandırılmış bir Redis, uygulamalarınızda inanılmaz bir hız artışı sağlarken, veri kaybı riskini de minimize eder. Benim de canlı sunucularımda uyguladığım yöntemleri adım adım paylaşacağım.

🔍 Optimizasyon Öncesi Temel Kontroller

İşe başlamadan önce, mevcut Redis durumunuzu analiz etmelisiniz. Aşağıdaki komutlarla sunucunuzun halihazırdaki durumunu gözlemleyin.

Bash:
redis-cli INFO memory
redis-cli INFO persistence
redis-cli INFO stats

Bu çıktılarda `used_memory`, `maxmemory`, `rdb_last_save_time` ve `aof_current_size` gibi metrikleri not alın. Optimizasyonun etkisini buradan takip edeceksiniz.

⚙️ Maxmemory ve Bellek Politikalarını Ayarlama

Redis'in bellek tükenmesi ve swap'e düşmesi en büyük performans düşmanıdır. İlk yapmanız gereken, sisteme uygun bir bellek limiti (`maxmemory`) ve bu limite ulaşıldığında hangi politikayı uygulayacağını belirlemektir. Ana konfigürasyon dosyası genellikle /etc/redis/redis.conf yolundadır.

Kod:
# Maksimum bellek limitini belirleyin (örn: 1GB için)
maxmemory 1gb

# Kullanılacak bellek politikasını seçin
# maxmemory-policy noeviction

Şu ayara çok dikkat etmelisiniz: `maxmemory-policy`. En yaygın politikalar şunlardır:
`allkeys-lru`: En az kullanılan (LRU) anahtarları, tüm anahtar havuzundan siler. Genel önbellek senaryoları için idealdir.
`volatile-lru`: Sadece TTL (yaşam süresi) atanmış anahtarlar arasından LRU'ya göre siler.
`allkeys-random`: Rastgele anahtar siler.
`volatile-ttl`: Kalan ömrü en kısa olan anahtarı siler.
`noeviction`: Hiçbir anahtarı silmez, yazma işlemlerine hata döndürür. Veri kaybı istemiyorsanız ve verilerinizin yedeği/taşınması varsa bu seçeneği kullanın.

Benim sunucularda genelde önbellek amaçlı kullanımlar için `allkeys-lru`, kritik oturum verileri de tutuluyorsa `volatile-lru` politikasını tercih ederim. Karar, verinizin yapısına bağlı.

💾 Kalıcılık (Persistence) Stratejisini Belirlemek

Redis verileri diske nasıl kaydedeceğini iki ana yöntemle belirler: RDB (anlık görüntü) ve AOF (append-only file). İkisini aynı anda da kullanabilirsiniz.

📸 RDB (Redis Database Dump) Ayarları

RDB, belirli aralıklarla veya belirli sayıda yazma işleminde belleğin tam anlık görüntüsünü alır. Çok hızlıdır ve yedekleme için mükemmeldir. Ancak son kayıt ile çökme anı arasında veri kaybı olabilir.

Kod:
# Belirli süre/yazma kombinasyonlarında kaydet
save 900 1    # 15 dakikada en az 1 değişiklik varsa
save 300 10   # 5 dakikada en az 10 değişiklik varsa
save 60 10000 # 1 dakikada en az 10000 değişiklik varsa

# RDB dosyasının adı
dbfilename dump.rdb

# RDB dosyasının kaydedileceği dizin (BU ÇOK ÖNEMLİ!)
dir /var/lib/redis

`dir` yolunun yeterli disk alanı olan bir bölümde olduğundan emin olun. Canlı sistemlerde `save 60 10000` gibi sık aralıklar, disk IO'yu artırabilir, dikkatli olun.

📝 AOF (Append Only File) Ayarları

AOF ise her yazma komutunu log olarak dosyaya ekler. Çok daha güvenilirdir, en fazla 1 saniyelik veri kaybı riski vardır. Ancak RDB'ye göre dosya boyutu daha büyük olabilir ve kurtarma süresi daha uzundur.

Kod:
# AOF'yi aktif et
appendonly yes

# Senkronizasyon sıklığı (Güvenilirlik-Performans dengesi)
# appendfsync always   # Her komuttan sonra, güvenli ama çok yavaş
appendfsync everysec   # Saniyede bir (TAVSİYE EDİLEN)
# appendfsync no       # İşletim sistemine bırak, en hızlı ama riskli

# AOF yeniden yazma (rewrite) için otomatik tetikleme
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

Benim tavsiyem, veri güvenliğinin önemli olduğu üretim sistemlerinde hem RDB hem de AOF'yi (`appendfsync everysec` ile) birlikte aktif etmenizdir. Bu size hem hızlı yedekleme (RDB) hem de veri dayanıklılığı (AOF) sağlar.

⚠️ Kritik Uyarılar ve Canlı Sistem İpuçları

1. AOF yeniden yazma (rewrite) işlemi, yoğun bir sistemde CPU ve disk kullanımını patlatabilir. `auto-aof-rewrite-percentage` değerini yüksek tutarak bu sıklığı azaltabilirsiniz.
2. RDB `save` komutları çok sık ayarlanırsa (örn: `save 1 1`), disk sürekli meşgul olur ve performans düşer.
3. `maxmemory` limiti asla fiziksel RAM'inizin tamamına eşit olmamalıdır. Sistem ve diğer prosesler için de alan bırakın. %80-90 civarı güvenli bir başlangıçtır.
4. Her konfigürasyon değişikliğinden sonra Redis'i yeniden başlatmanız gerekir. Canlı sistemde bunu nasıl yapacağınızı planlayın (örn: `redis-cli save` komutu ile anlık RDB alıp, sonra restart).

🔚 Sonuç ve Test

Tüm bu ayarları yaptıktan ve Redis'i yeniden başlattıktan sonra, baştaki `INFO` komutlarını tekrar çalıştırın ve değişiklikleri gözlemleyin. `redis-benchmark` aracı ile basit bir performans testi de yapabilirsiniz.

Unutmayın, sihirli bir tek ayar yoktur. Buradaki ayarlar, iş yükünüze, veri boyutunuza ve donanımınıza göre ince ayar ister. Siz bu konfigürasyonu kendi sunucularınızda nasıl yapıyorsunuz? Farklı bir politika veya ipucunuz var mı? Takıldığınız bir nokta olursa aşağıya yazmaktan çekinmeyin, beraber çözelim.
 

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz.

Zevkine göre renk kombinasyonunu belirle

Tam ekran yada dar ekran

Temanızın gövde büyüklüğünü sevkiniz, ihtiyacınıza göre dar yada geniş olarak kulana bilirsiniz.

Geri