Bilgi Bankası
RedisPerformans ve kapasite 14 dk 14.06.2026

Redis bellek profili: hot key, TTL ve önbellek stratejisini birlikte düşünmek

Redis’i sadece “önbellek” diye görmek bazen tehlikelidir; çünkü önbellek de zamanla ürün davranışının bir parçası olur. Hangi key sıcak, hangisi gereğinden büyük, hangisinin TTL’i yok bilmiyorsanız kapasite kararınız tahmine dönüşür.

Bu yazı sana şu durumda yardımcı olur
  • önbellek hit oranı düşüyor
  • bazı keyler aşırı büyük veya aşırı sık okunuyor
  • TTL olmayan önbellek keyleri birikiyor
  • Redis kapasitesi artıyor ama sorun tekrar ediyor
  • gecikme spike belirli uç noktalarle ilişkili görünüyor
Yazıyı bitirince

Redis belleğini key tasarımı, TTL disiplini, hot key ve big key açısından okuyabilecek; kapasite artırımı ile veri modeli düzeltmesini 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 ve izlenebilir bir servis olarak ürünleştirmeyi hedefler. Ama Redis’in sağlıklı kalması için key tasarımı ve TTL alışkanlığı uygulama ekibinin elindedir; platform ancak bu kararları görünür kılabildiği ölçüde değer üretir.

Redis’te en tehlikeli cümle: “zaten önbellek”

Bir veri önbellek ise önemsiz sanılabilir. Ama yanlış önbellek tasarımı veritabanını korumak yerine onu daha fazla yorabilir. TTL yoksa bellek şişer, hot key varsa tek nokta ısınır, big key varsa tek komut herkesi bekletebilir.

İyi Redis tasarımı, yalnızca hızlı okuma değil, kontrollü unutma tasarımıdır.

Önce bellek profilini çıkarın

Bellek profili çıkarırken hedef tüm keyleri tek tek saymak değildir; riskli desenleri yakalamaktır. Hangi prefix büyüyor, TTL olmayan keyler nerede birikiyor, hangi key beklenenden büyük, bunlar daha değerlidir.

Temel bellek ve TTL örneklemesi

redis-profile.sh
redis-cli -u "$REDIS_URL" INFO memory
redis-cli -u "$REDIS_URL" INFO keyspace

redis-cli -u "$REDIS_URL" --scan --pattern "product:*" | head -100
redis-cli -u "$REDIS_URL" TTL "product:acme:123"
redis-cli -u "$REDIS_URL" MEMORY USAGE "product:acme:123"

Hot key varsa kapasite değil dağılım konuşulur

Bir key çok sık okunuyorsa Redis genel olarak sağlıklı görünse bile tek komut deseni gecikme yaratabilir. Hot key problemi bazen ürün davranışından gelir: ana sayfa konfigürasyonu, popüler ürün, global sayaç veya tek tenant’a aşırı trafik.

Çözüm bazen keyi parçalamak, bazen local önbellek eklemek, bazen TTL jitter kullanmak, bazen de veriyi farklı modellemektir.

TTL jitter ile aynı anda expire olmayı azaltma

redis-jitter.ts
const baseTtl = 300
const jitter = Math.floor(Math.random() * 60)

await redis.set(key, JSON.stringify(value), {
  EX: baseTtl + jitter,
})

Aynı anda expire olan çok sayıda key, veritabanına ani yük bindirebilir. Küçük jitter bu dalgayı yumuşatır.

Big key gördüğünüzde veri modelini sorgulayın

Büyük hash, büyük list veya büyük set tek bir komutu pahalı hale getirir. LRANGE 0 -1 veya HGETALL gibi komutlar küçükken zararsız, büyüyünce risklidir.

Bu noktada “Redis’i büyütelim” yerine “Bu key neden bu kadar büyüyor?” diye sormak daha öğreticidir. Sayfalama, parçalama veya veriyi kalıcı bir motora taşımak gerekebilir.

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