Bilgi Bankası
RedisPerformans ve kapasite 12 dk 14.06.2026

Redis bellek doldu, eviction başladı: TTL, SLOWLOG ve gecikme spike çözümü

Redis çoğu ekip için “hızlı olsun” diye konur; sonra bir gün bellek dolar, eviction başlar ya da p99 gecikme zıplar. Bu yazı Redis’i kara kutu gibi görmek yerine TTL, key boyutu ve riskli komutlar üzerinden okunabilir hale getirir.

Bu yazı sana şu durumda yardımcı olur
  • OOM command not allowed
  • evicted_keys artışı
  • SLOWLOG içinde KEYS veya büyük LRANGE komutları
  • p95/p99 gecikme artışı
  • önbellek hit oranında düşüş
Yazıyı bitirince

Redis bellek baskısını “makine küçük” diye geçiştirmeden; TTL eksikliği, big key, riskli komut ve kapasite ihtimali olarak ayırabileceksiniz.

TürkDB açısından ürünleşme notu

Bu bölüm, TürkDB’nin ilgili problemi hangi ürün ilkeleri ve kontrol noktalarıyla ele alacağını anlatır. Kapsam, gerçek iş yükü ve ihtiyaçla birlikte netleşir.

TürkDB Redis’i güvenli erişim, tenant izolasyonu ve gözlem akışıyla düzenli tutar. Ama en değerli tarafı şudur: metrikler görünür olduğunda ölçeklemek mi, TTL düzeltmek mi, veri modelini değiştirmek mi gerektiğini daha dürüst konuşabilirsiniz.

Bellek baskısını sadece “RAM yetmedi” diye okumayın

Redis hızlıdır ama sınırsız değildir. maxmemory sınırına yaklaşınca eviction veya OOM davranışı devreye girer. Önbellek olarak kullanılan Redis ile kalıcı kuyruk/oturum deposu olarak kullanılan Redis aynı policy ile yönetilmemelidir.

Bu yüzden “RAM artır” kararı bazen doğru, bazen de pahalı bir ertelemedir. Eğer TTL yoksa veya birkaç büyük key belleği şişiriyorsa kapasite artırmak yalnızca problemi biraz ileri taşır.

İlk kontrol used_memory, maxmemory, mem_fragmentation_ratio ve evicted_keys değerleridir. Bu değerler kapasite mi, TTL eksikliği mi, yoksa büyük key problemi mi olduğunu gösterir.

Bellek ve eviction kontrolü

redis-memory.sh
redis-cli -u "$REDIS_URL" INFO memory
redis-cli -u "$REDIS_URL" INFO stats | egrep "evicted_keys|keyspace_hits|keyspace_misses"
redis-cli -u "$REDIS_URL" SLOWLOG GET 10

TTL, önbellek katmanının ahlakıdır

Önbellek keyleri sonsuza kadar yaşarsa Redis zamanla veritabanına dönüşür ama veri modeli buna göre tasarlanmamıştır. TTL bu yüzden küçük bir teknik detay değil, önbellek katmanının sözleşmesidir.

Kullanıcı oturumu gibi kritik verilerde TTL iş kuralına göre belirlenmeli; analitik sayaç veya geçici hesaplarda kısa TTL tercih edilmelidir.

Yaygın önbellek kullanım örneği

redis-cache.ts
const key = `product:${tenantId}:${productId}`
const cached = await redis.get(key)

if (cached) return JSON.parse(cached)

const product = await db.products.findById(productId)
await redis.set(key, JSON.stringify(product), { EX: 300 })
return product

Önbellek key tasarımı tenant bilgisini içermeli ve mutlaka TTL ile yazılmalıdır.

Big key ve riskli komutları güvenli tespit edin

Redis gecikme spike sorunlarında tek bir büyük key, büyük liste veya bloklayıcı komut tüm istekleri etkileyebilir. KEYS komutu canlı ortamda kullanılmamalıdır; SCAN ile parçalı gezinmek ve örnekleme yapmak daha güvenlidir.

SLOWLOG içinde KEYS, HGETALL, SMEMBERS, LRANGE 0 -1 gibi komutlar görünüyorsa veri modeli tekrar değerlendirilmelidir. Büyük koleksiyonlar sayfalama, parçalama veya farklı bir depolama modeline taşınmalıdır.

SCAN ile güvenli örnekleme

redis-scan.sh
redis-cli -u "$REDIS_URL" --scan --pattern "product:*" | head -100

redis-cli -u "$REDIS_URL" MEMORY USAGE "product:acme:123"
redis-cli -u "$REDIS_URL" TTL "product:acme:123"

TürkDB ile yavaş komut ve kapasite kararı

SLOWLOG içinde KEYS, büyük SMEMBERS, büyük LRANGE veya Lua scriptleri görünüyorsa sorun yalnızca kapasite değildir. Önce komut desenini düzeltmek, sonra kapasiteyi artırmak daha sağlıklı sonuç verir.

TürkDB Redis gözlem akışı

turkdb-redis.sh
turkdb cluster create --name app-cache \
  --type redis \
  --plan starter \
  --region ist1 \
  --wait

turkdb cluster slow-queries app-cache --limit 20
turkdb cluster scale app-cache --storage 20
Bu TürkDB bloğu kavramsal ürün akışını anlatır; mevcut çalışan komut, garanti edilen özellik veya teslim tarihi vaadi olarak okunmamalıdır.
Devam etmek istersen

Sorunu motor bazında derinleştirin

Benzer belirtiler farklı motorlarda farklı nedenlere dayanır; yayınlanan tüm rehberleri ana sayfadan takip edebilirsiniz.

Tüm makaleler