爲何搭建集羣?node
- 自動把數據劃分到各個節點
- 單個節點故障時可繼續工做
集羣中每一個節點通常須要兩個端口redis
- 10000 Redis Cluster 節點對節點的Communication channel,用於節點通訊
- 6379 普通的server client
Redis Cluster通常與Docker配合使用.Docker 提供port mapping技術,能夠讓一個程序實際運行的端口與暴露在外的端口不一樣,也就是可以讓一個端口運行多個程序。算法
Redis Cluster 的數據分片(sharding翻譯過來是這個吧)app
- 算法:一個Redis Cluster有16384個key slot(槽),對於一個給定的key咱們按必定方式對16384取模
- 每一個node負責一部分的key slot. 如如今集羣裏有三個節點A,B,C。 給A分配0~5500的key slot,B分配5500~11000,C分配11001~16384的key slot。 一個命令若涉及多個key,那麼這些key都屬於一個slot
master-slave模型翻譯
- 爲了保證集羣的available,cluster爲每個master node 建立了一個slave node.如如今有三個node A,B,C,在建立它們的同時又建立了A1,B1,C1做爲備份。A掛了就用A1,A1掛了那就沒辦法了。
Redis Cluster的一致性server
- redis提供wait命令,實現同步寫,但在複雜狀況下仍可能出現寫丟失。
- node timeout ,這個時間事後mastrer被它的replicas替代。這個參數很重要