分布式缓存-Redis分片集群

avatar
作者
筋斗云
阅读量: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}作为前缀

集群伸缩:

即添加移除节点

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!