Redis3.0 之后引入了 Redis Cluster 集群方案,它用来解决分布式扩展的需求,同时也实现了高可用机制。
集群要求至少有3个master,每个master负载均衡负责读写,同时每个master还有2个slave,在master宕机的时候,salve会被选举为master
所以需要9个节点来完成redis-cluster
(1)由多个Redis服务器组成的分布式网络服务集群;
(2)集群之中有多个Master主节点,每一个主节点都可读可写;
(3)节点之间会互相通信,两两相连;
(4)Redis集群无中心节点。
(5) master和slave之间,数据保持同步
集群分片策略
- 节点 1 负责处理 0 号至 5460 号哈希槽。
- 节点 2 负责处理 5460号至 10922号哈希槽。
- 节点 3 负责处理 10923号至 16383 号哈希槽。
集群将整个数据库分为16384个槽位slot,所有key-value数据都存储在这些slot中的某一个上。一个slot槽位可以存放多个数据,key的槽位计算公式为:slot_number=crc16(key)%16384,其中crc16为16位的循环冗余校验和函数。ps:如果key不在对应的节点上,节点会负责转发到正确节点
由于Redis集群无中心节点,请求会随机发给任意主节点;
主节点只会处理自己负责槽位的命令请求,其它槽位的命令请求,该主节点会返回客户端一个转向错误;
客户端根据错误中包含的地址和端口重新向正确的负责的主节点发起命令请求。
标签:slot,Redis,cluster,集群,key,master,节点 From: https://www.cnblogs.com/jack1990/p/16879781.html