redis cluster:
(1)自動將數據進行分片,每個master上放一部分數據
(2)提供內置的高可用支持,部分master不可用時,還是可以繼續工作的
分片算法:
hash算法 -> 一致性hash算法(memcached) -> redis cluster,hash slot算法
1、hash算法和弊端(大量緩存重建)
2、一致性hash算法(自動緩存遷移)+虛擬節點(自動負載均衡)
增加虛擬節點解決緩存熱點問題
3、redis cluster的hash slot算法
redis cluster有固定的16384個hash slot,對每個key計算CRC16值,然後對16384取模,可以獲取key對應的hash slot
redis cluster中每個master都會持有部分slot,比如有3個master,那麼可能每個master持有5000多個hash slot
hash slot讓node的增加和移除很簡單,增加一個master,就將其他master的hash slot移動部分過去,減少一個master,就將它的hash slot移動到其他master上去
移動hash slot的成本是非常低的
客戶端的api,可以對指定的數據,讓他們走同一個hash slot,通過hash tag來實現