目录
Redis分片集群
分片集群结构
主从和哨兵可以解决高可用、高并发读的问题。但是依然有两个问题没有解决
1、海量数据存储问题
2、高并发写的问题
使用分片集群可以解决上述问题,分片集群特征:
1、集群中有多个master,每个master保存不同数据
2、每个master都可以有多个slave节点
3、master之间通过ping监测彼此健康状态
4、客户端请求可以访问集群任意节点,最终都会被转发到正确节点
分片集群可以如下图所示:
分片集群结构-数据读写
Redis分片集群引入哈希槽的概念,Redis集群有16384个哈希槽,每个key通过CRC16校验后对16384取模来决定放置哪个槽,集群的每个节点负责一部分hash槽。如下图所示
简答
面试官:redis的分片集群有什么作用
候选人:分片集群主要解决的是,海量数据存储的问题,集群中有多个master,每个master保存不同数据,并且还可以给每个master设置多个slave节点,就可以继续增大集群的高并发能力。同时每个master之间通过ping监测彼此健康状态,就类似于哨兵模式了。当客户端请求可以访问集群任意节点,最终都会被转发到正确节点。
问:Redis分片集群中数据是怎么存储和读取的?
1、Redis分片集群引入了哈希槽的概念,Redis集群有16384个哈希槽。
2、将16384个插槽分配到不同的实例。
3、读写数据:根据key的有效部分计算哈希值,对16384取余(有效部分,如果key前面有大括号,大括号的内容就是有效部分,如果没有,则以key本身做为有效部分)余数做为插槽,寻找插槽所在的实例。