Redis ("Remote Dictionary Server"), en sık cache, oturum deposu, kuyruk veya rate limiter olarak kullanılan bellek-içi bir veri yapısı sunucusudur. Her şey RAM'de yaşadığı için okuma ve yazmalar bir milisaniyenin çok altında tamamlanır — ve RAM sonlu ve uçucu olduğu için operasyonel olarak asıl önemli olan bellek limitlerini, kalıcılığı ve failover'ı nasıl yönettiğinizdir.

2026'daki her değerlendirmenin içermesi gereken lisans notu: Redis, Mart 2024'te RSALv2/SSPLv1'e geçerek açık kaynaktan çıktı; bu, Linux Foundation'ın Valkey fork'unu doğurdu — bugün birçok yönetilen hizmetin arkasındaki motor. Redis 8 (Mayıs 2025) OSI-onaylı AGPLv3'ü ekleyerek Redis'i açık kaynağa döndürdü. Pratikte seçiminiz Redis 8+, Valkey ya da ikisinden birini çalıştıran yönetilen bir hizmet olacaktır; aşağıdaki komutlar ve kavramlar hepsinde geçerlidir.

Redis Ne İçin Kullanılır?

Aynı motor şaşırtıcı sayıda işi karşılar. Üretimde en yaygın Redis kullanım alanları:

  • Cache — klasik kullanım: sıcak veritabanı sonuçlarını veya render edilmiş parçaları TTL ile RAM'de tutup okuma gecikmesini ve veritabanı yükünü düşürmek.
  • Oturum deposu — web uygulamaları için kullanıcı oturumları, tüm uygulama sunucuları arasında paylaşımlı.
  • Rate limiting — süreli atomik sayaçlarla kullanıcı veya IP başına limitler birkaç komutluk iştir.
  • Kuyruklar ve mesajlaşma — list'ler ve stream'ler iş kuyruklarını ve olay hatlarını taşır (fan-out için consumer group'lar).
  • Liderlik tabloları ve sayaçlar — sorted set'ler sıralama, puanlama ve top-N sorgularını doğal olarak halleder.
  • Gerçek zamanlı özellikler — sohbet, bildirim ve canlı panolar için pub/sub.

Veri Yapıları

Redis özünde anahtar-değerdir ama değerler tipli yapılardır: string'ler, hash'ler, list'ler, set'ler, sorted set'ler (liderlik tabloları, öncelik kuyrukları), stream'ler (consumer group'lu append-only loglar), ayrıca bitmap'ler ve HyperLogLog'lar. Her anahtar TTL taşıyabilir — Redis'i doğal bir cache yapan da budur.

Eviction Politikaları: Üretimi Düşüren Ayar

Bellek maxmemory'ye ulaştığında ne olacağına eviction politikası karar verir. Varsayılan noeviction'dır: yazmalar başarısız olmaya başlar — maxmemory hiç ayarlanmamışsa süreç, kernel OOM-kill edene kadar büyür. Saf bir cache için neredeyse her zaman allkeys-lru (veya allkeys-lfu) istersiniz; volatile-* varyantları yalnızca TTL'li anahtarları tahliye eder. Bu teorik bir endişe değil — varsayılan noeviction politikasının yol açtığı bir üretim kesintisini belgeledik.

Kalıcılık: RDB ve AOF

Redis iki kalıcılık mekanizması sunar. RDB takvimli anlık görüntüler alır: kompakt dosyalar ve hızlı yeniden başlatmalar, ama çökme son snapshot'tan bu yana her şeyi kaybettirir. AOF (append-only file) her yazmayı loglar, tipik olarak saniyede bir fsync eder ve kaybı yaklaşık bir saniyeyle sınırlar — bedeli daha büyük dosyalar ve daha yavaş açılıştır. Veriyi önemseyen üretim kurulumları genellikle ikisini birleştirir. Tasarım sorusu basit: harcanabilir bir cache kalıcılık tamamen kapalı çalışabilir; oturum deposu, kuyruk veya rate limiter çalışamaz — veri setini kaybetmek birilerini uyandıracaksa, kalıcılığı yapılandırın ve test edin.

Yüksek Erişilebilirlik: Sentinel ve Cluster

Redis'te replikasyon asenkrondur; bir failover, eski birincilin onaylayıp hiç gönderemediği yazmaları kaybedebilir — buna göre tasarlayın. Replikasyonun üzerinde iki HA modu var. Sentinel, birincil/replika seti için izleme ve otomatik failover ekler; veri seti tek düğüme sığmalıdır. Redis Cluster, veriyi 16.384 hash slot'uyla düğümlere böler, bellek ve yazma kapasitesini ölçekler; kısıt, çok-anahtarlı işlemlerin aynı slot'taki anahtarlara vurması gerekliliğidir. Tek düğümün taşıyabildiği veri için erişilebilirlik gerekiyorsa Sentinel; veri ya da yazma yükü gerçekten tek düğümü aşıyorsa Cluster seçin.

Yaygın Arıza Kalıpları

  • Cache izdiham (stampede). Bir Redis restart'ı veya toplu TTL bitişi tüm istekleri aynı anda veritabanına yollar. Bu deseni arkasındaki veritabanını öldüren bir cache arızasında gördük. TTL jitter, istek birleştirme ve ısınma ile hafifletin.
  • Sıcak ve büyük anahtarlar. Yoğun kullanılan tek bir anahtar yükü tek düğüme sabitler; KEYS gibi komutlar veya dev bir set'i çekmek tek-iş-parçacıklı olay döngüsünü herkes için bloklar.
  • Cache'i gerçek kaynak sanmak. Verinin tek kopyası test edilmiş kalıcılık ve yedek olmadan Redis'te yaşıyorsa o bir cache değildir — itiraf edilmemiş bir veritabanıdır.

Hızlı Başlangıç

Python'un redis-py istemcisiyle:

import redis

r = redis.Redis(host="localhost", port=6379, db=0, decode_responses=True)
r.set("greeting", "hello", ex=60)  # 60 saniyelik TTL
print(r.get("greeting"))           # hello

decode_responses=True'ya dikkat — onsuz değerler ham byte olarak döner (b'hello').

Sık Sorulan Sorular

Redis veritabanı mı, cache mi?

Yapılandırmaya göre ikisi de. Redis tam bir bellek-içi veri deposudur: kalıcılık (RDB/AOF) ve replikasyon açıkken uygun iş yükleri için birincil veritabanı olabilir. Pratikte çoğu ekip onu disk-tabanlı bir veritabanının önünde cache veya oturum deposu olarak çalıştırır — kritik olan hangi rolü oynadığına karar verip kalıcılığı ona göre yapılandırmaktır.

Redis ne tür bir veritabanı? İlişkisel mi?

Redis NoSQL, bellek-içi bir anahtar-değer deposudur — daha doğrusu bir veri yapısı sunucusu. İlişkisel değildir: tablo yok, SQL yok, join yok. Veriyi tipli yapılara (hash, list, set, sorted set, stream) işaret eden anahtarlarla modellersiniz.

Redis neyin kısaltması, kim yarattı?

Redis, REmote DIctionary Server'ın kısaltmasıdır. 2009'da Salvatore Sanfilippo ("antirez") tarafından yaratıldı ve C ile yazıldı — bu kadar hızlı olmasının nedenlerinden biri.

Redis nasıl çalışır?

Redis tüm veri setini RAM'de tutar ve komutları çoğunlukla tek-iş-parçacıklı bir olay döngüsünde işler; işlemler kilit çekişmesi olmadan mikrosaniyelerde tamamlanır. Dayanıklılık opsiyonel snapshot'lardan (RDB) ve append-only yazma logundan (AOF); erişilebilirlik, failover'ı Sentinel veya Cluster'ın yönettiği asenkron replikasyondan gelir.

Redis mi Memcached mi?

Memcached daha basit, çok-iş-parçacıklı saf bir cache'tir; tek ihtiyacınız düz anahtar-değer cache'i ise yeterlidir. Redis tipli veri yapıları, kalıcılık, replikasyon, transaction'lar, Lua scripting ve pub/sub ekler — varsayılan tercih olmasının nedeni budur. TTL'li GET/SET'ten fazlasına ihtiyacınız olma ihtimali varsa Redis (veya Valkey) ile başlayın.

Redis, onu gerçek altyapı gibi ele alan ekipleri ödüllendirir: maxmemory'yi ve eviction politikasını bilinçli ayarlayın, kalıcılığı verinin değerine göre seçin, belleği ve replikasyon gecikmesini izleyin. Boyutlandırma, HA tasarımı ve yönetilen Redis/Valkey seçimi bulut mühendisliği ekibimizin gündelik işidir.

Bunu üretimde mi çalıştırıyorsunuz? AWS Yönetilen Hizmetler ekibimiz böyle ortamları 7/24 işletir — izleme, olay müdahalesi, yama ve maliyet kontrolü, isimli kıdemli mühendislerle, €3.000/aydan itibaren.