Redis Eviction Policy Nedir?
Redis, bu silme işleminde farklı politikalar sunar. En yaygın olanları şunlardır:
- volatile-lru: Yalnızca TTL (Time-To-Live) süresi dolmuş olan veriler silinir.
- allkeys-lru: Bellekteki tüm anahtarlar arasında en az kullanılanlar silinir.
- volatile-random: TTL süresi olan verilere rastgele seçimle silme işlemi yapılır.
- allkeys-random: Bellekteki tüm anahtarlar arasından rastgele seçimle silme yapılır.
- volatile-ttl: TTL süresi en kısa olan veriler silinir.
Ancak bazen, bu politikalar beklediğiniz gibi çalışmaz ve "Eviction Policy Not Working" hatasını alırsınız. Peki, bu hatanın sebebi ne olabilir?
Hata Neden Oluşur?
# 1. Bellek Limitinin Aşılması
Redis’in bellek sınırı dolmuş olabilir. Eğer Redis'in belleği dolarsa ve eviction politikası devreye girmemişse, bu durumda bu hatayı alırsınız. Bu genellikle Redis'in yapılandırma dosyasında `maxmemory` parametresinin doğru bir şekilde ayarlanmamış olmasından kaynaklanır.
Redis konfigürasyon dosyanızda bir yanlışlık olabilir. Özellikle eviction politikalarıyla ilgili parametrelerin yanlış ayarlanması, bu tür bir hataya yol açabilir. Bu gibi durumlarda, Redis, önceden tanımlanmış eviction politikasına rağmen eski verileri silmeye çalışmaz.
# 3. Veri Boyutunun Beklenenden Büyük Olması
Eğer uygulamanız çok büyük veri setleriyle çalışıyorsa, Redis’in tahmin ettiğinizden daha fazla bellek kullanması gerekebilir. Bu durumda eviction politikası doğru çalışmaya başlasa bile, bellek yönetimi yetersiz kalabilir.
Eski Redis sürümleri, bazı bellek yönetimi ve eviction politikaları konusunda hatalar içerebilir. Bu da politikaların düzgün çalışmamasına neden olabilir.
Çözüm Yolları
# 1. `maxmemory` Ayarını Yapın
maxmemory 1gb
Yukarıdaki örnekte, Redis’in 1GB belleği aşmasına izin verilmez.
# 2. Eviction Politikalarını Kontrol Edin
maxmemory-policy allkeys-lru
Ayrıca, bu politikaların TTL (Time-To-Live) değerlerine bağlı olarak veriyi silmesini istiyorsanız, TTL özelliklerini de kontrol edebilirsiniz.
# 3. Bellek Kullanımını İzleyin
INFO memory
Bu komut, bellek kullanımını ve mevcut sınırları gösterir. Bellek kapasitesinin dolup dolmadığını burada kontrol edebilirsiniz.