Redis, hafif, hızlı ve açık kaynaklı bir bellek içi (in-memory) veri deposudur. Ancak kullanım senaryonuza göre tek bir Redis sunucusu (Single Node) ile mi yoksa dağıtık bir yapı (Redis Cluster) ile mi ilerlemeniz gerektiğini iyi anlamak gerekir. Bu yazıda, Redis’in bu iki farklı mimarisini basitçe ama teknik derinliğiyle ele alacağız.
Single Node Redis: Basit ve Hızlı
Single Node Redis mimarisi, Redis’in en sade halidir. Tek bir instance üzerinde tüm veri barındırılır. Uygulamalar bu sunucuya doğrudan bağlanır.
Avantajları
• Kurulumu ve yönetimi çok kolaydır.
• Performansı çok yüksektir (RAM tabanlı).
• Küçük veya orta ölçekli uygulamalar için yeterlidir.
Dezavantajları
• Bellek sınırlıdır: Tek instance olduğundan RAM limiti fiziksel sınıra bağlıdır.
• Yüksek erişilebilirlik yoktur: Redis çökerse erişim kesilir.
• Ölçeklenemez: Yük artışında dağıtım yapılamaz.
Kullanım Senaryoları
• Küçük web uygulamaları (session cache)
• Queue sistemleri (tek node’lu background worker)
• Dev ortamları
Redis Cluster: Ölçeklenebilir ve Dağıtık
Redis Cluster, verileri birden fazla node’a shard ederek yatayda ölçeklenebilirlik sağlar. Her node belirli bir slot aralığınısorumluluğunda tutar (0–16383 arası).
Temel Özellikler
• Sharding (parçalama): Veriler anahtar hash’lerine göre dağıtılır.
• Replikasyon: Her master node’un bir veya daha fazla replica’sı olabilir.
• Failover: Master down olursa replica otomatik olarak master olur.
Avantajları
• Bellek sınırı yok: Her node ayrı RAM kullanır.
• Ölçeklenebilir: Yeni node eklenerek sistem büyütülebilir.
• Yüksek erişilebilirlik: Otomatik failover ile kesintisiz hizmet.
Dezavantajları
• Yönetimi daha karmaşıktır.
• Uygulama tarafında cluster-aware client gerekir.
• Veritabanı işlemleri (multi-key, transaction) sınırlıdır.
Kullanım Senaryoları
• Büyük ölçekli mikroservis mimarileri
• Yüksek trafikli API cache sistemleri
• Oyun içi puan sistemleri, IoT verisi toplayıcılar
🔧 Docker ile Örnek Kurulumlar (Ön Bilgi)
- Single Node Redis:
ibrahimyildiz@ibrahim-MacBook-Pro ~ % docker run -d --name redis -p 6380:6379 redis
Unable to find image 'redis:latest' locally
latest: Pulling from library/redis
943331d8a9a9: Pull complete
89cadec6c5cf: Pull complete
ee39059ea0d1: Pull complete
5c0a7b26f989: Pull complete
322556a77f16: Pull complete
d5dfae02bc2c: Pull complete
4f4fb700ef54: Pull complete
551293399a41: Pull complete
Digest: sha256:7df1eeff67eb0ba84f6b9d2940765a6bb1158081426745c185a03b1507de6a09
Status: Downloaded newer image for redis:latest
b09998d7e49da36a32362716acb965fed1f446785a6ee1b192183110f865f23b
ibrahimyildiz@ibrahim-MacBook-Pro ~ %
ibrahimyildiz@ibrahim-MacBook-Pro ~ %
ibrahimyildiz@ibrahim-MacBook-Pro ~ % docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b09998d7e49d redis "docker-entrypoint.s…" 2 seconds ago Up 2 seconds 0.0.0.0:6380->6379/tcp redis
ba321a1cc5de ghcr.io/open-webui/open-webui:main "bash start.sh" 5 hours ago Up 5 hours (healthy) 0.0.0.0:3000->8080/tcp open-webui
8c172a533d97 qdrant/qdrant "./entrypoint.sh" 6 days ago Up 6 days 0.0.0.0:6333->6333/tcp, 6334/tcp bold_mirzakhani
ae6f07472fc2 mongo:6.0 "docker-entrypoint.s…" 13 days ago Up 13 days 0.0.0.0:27018->27017/tcp mongo1
57213c271c7a mongo:6.0 "docker-entrypoint.s…" 13 days ago Up 13 days 0.0.0.0:27019->27017/tcp mongo2
ibrahimyildiz@ibrahim-MacBook-Pro ~ % docker exec -it b09998d7e49d bash
root@b09998d7e49d:/data# redis-server
29:C 05 May 2025 14:35:50.770 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
29:C 05 May 2025 14:35:50.770 * Redis version=7.4.3, bits=64, commit=00000000, modified=0, pid=29, just started
29:C 05 May 2025 14:35:50.770 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
29:M 05 May 2025 14:35:50.770 * monotonic clock: POSIX clock_gettime
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis Community Edition
.-`` .-```. ```\/ _.,_ ''-._ 7.4.3 (00000000/0) 64 bit
( ' , .-` | `, ) Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
| `-._ `._ / _.-' | PID: 29
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | https://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
Macos M1-M2-M3–M4 Redis Kurlumu
Homebrew Yüklüyse kurmayın
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install redis
brew services list
brew services start redis
redis-server
redis-cli