Redis Mimarisine Derin Bakış: Single Node vs Cluster Yapısı

Redis Mimarisine Derin Bakış: Single Node vs Cluster Yapısı

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

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Back To Top