目前Redis Cluster仍處于Beta版本,Redis 3.0將會加入,在此可以先對其主要功能和原理進行一個預覽。參考《Redis Cluster - a pragmatic approach to distribution》。
### 1?沒有集群的Redis
沒有集群功能的Redis,每個master-slave主從復制都獨立于其他結點,sharding需要在客戶端如Jedis中控制。可以使用官方提供的Sentinel監控主從的狀態,實現自動的Fail-over切換。具體請參見[《Redis主從和HA配置》](http://blog.csdn.net/dc_726/article/details/11694437)。
### 2?集群拓撲
所有結點直連其他結點,端口為baseport(6379)+4000。為了帶寬和性能,通信協議是二進制的。客戶端與結點之間的通信還是正常的ascii協議。

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

### 3?請求處理
Redis集群客戶端分為兩種:Dummy和Smart:
???Dummy模式:單連接,隨機連接一個結點,對現有客戶端代碼結構影響最小。
???Smart模式:長連接到許多結點,在客戶端緩存一份hashslot=>node的路由表,當接收到服務器的**-MOVED**響應時更新表項。這種方式具有低延遲,但當集群很大時,客戶端會維護許多連接,此時應當共享client對象實例。

當添加新結點,可以使用redis-trib的**MIGRATE**命令進行re-sharding。