阅读量:4
主从和哨兵 可以解决高可用、高并发读的问题。但是依旧有两个问题没有解决:
1、海量数据存贮
2、高并发写
分片集群:
分片集群特征:
1、集群中有多个master,每个master保存不同数据
2、每个master都可以有多个slave节点
3、master之间通过ping检测彼此健康状态
散列插槽:
Redis会把每一个master节点映射到0~16383共16384个插槽(hash slot)上,查看集群信息时就能看到:
数据key不是与master节点绑定,而是与插槽绑定。redis根据key的有效部分计算插槽值,分两种情况:
1、key中包含"{}",且{}中至少包括一个字符,则{}中的部分就是有效部分
2、key中不包含{},整个key都是有效部分
利用CRC16算法得到hash值,对16384取余,得到的结果就是slot值。再根据slot值判断存贮在哪个master节点上。
如何保证同类型数据固定存储在同一个redis实例上?
同一类数据使用相同的有效部分,比如key都以{typeId}作为前缀
集群伸缩:
即添加移除节点