1. 程式人生 > >Redis叢集功能預覽

Redis叢集功能預覽

目前Redis Cluster仍處於Beta版本,Redis 3.0將會加入,在此可以先對其主要功能和原理進行一個預覽。參考《Redis Cluster - a pragmatic approach to distribution》。

沒有叢集的Redis

沒有叢集功能的Redis,每個master-slave主從複製都獨立於其他結點,sharding需要在客戶端如Jedis中控制。可以使用官方提供的Sentinel監控主從的狀態,實現自動的Fail-over切換。具體請參見

叢集拓撲

所有結點直連其他結點,埠為baseport(6379)+4000。為了頻寬和效能,通訊協議是二進位制的。客戶端與結點之間的通訊還是正常的ascii

協議。


雖然結點是互聯並且功能等同的,但實際上結點還是分為masterslave兩種。例如下圖所示,每個master有兩個副本,副本不接受寫請求。Redis-trib叢集管理器會分配masterslave,使其儘量在不同的物理機上。


請求處理

Redis叢集客戶端分為兩種:DummySmart

ØDummy模式:單連線,隨機連線一個結點,對現有客戶端程式碼結構影響最小。

ØSmart模式:長連線到許多結點,在客戶端快取一份hashslot=>node的路由表,當接收到伺服器的-MOVED響應時更新表項。這種方式具有低延遲,但當叢集很大時,客戶端會維護許多連線,此時應當共享client物件例項。


當新增新結點,可以使用redis-tribMIGRATE命令進行re-sharding