一、使用版本:3.0.0.0
二、基本概念:
- Redis 集群是一个可以在多个 Redis 节点之间进行数据共享的设施(installation)。
- Redis 集群使用数据分片(sharding)而非一致性哈希(consistency hashing)来实现: 一个 Redis 集群包含 16384 个哈希槽(hash slot), 数据库中的每个键都属于这 16384 个哈希槽的其中一个, 集群使用公式 CRC16(key) % 16384 来计算键 key 属于哪个槽, 其中CRC16(key) 语句用于计算键 key 的 CRC16 校验和
- 集群中的每个节点负责处理一部分哈希槽。 举个例子, 一个集群可以有三个哈希槽, 其中:
- 节点 A 负责处理 0 号至 5500 号哈希槽。
- 节点 B 负责处理 5501 号至 11000 号哈希槽。
- 节点 C 负责处理 11001 号至 16384 号哈希槽。
- 节点的添加和移除
- 如果用户将新节点 D 添加到集群中, 那么集群只需要将节点 A 、B 、 C 中的某些槽移动到节点 D 就可以了。
- 如果用户要从集群中移除节点 A , 那么集群只需要将节点 A 中的所有哈希槽移动到节点 B 和节点 C , 然后再移除空白(不包含任何哈希槽)的节点 A 就可以了。
- 主从节点的作用
- 假如在创建集群的时候(或者至少在节点 B 下线之前), 我们为主节点 B 添加了从节点 B1 , 那么当主节点 B 下线的时候, 集群就会将 B1 设置为新的主节点, 并让它代替下线的主节点 B , 继续处理
5501
号至11000
号的哈希槽, 这样集群就不会因为主节点 B 的下线而无法正常运作了。 - 异步复制(虽然是异步复制,但是执行写命令和复制命令到从节点几乎是同时执行,所以一般不会丢失数据)
- 客户端向主节点 B 发送一条写命令。
- 主节点 B 执行写命令,并向客户端返回命令回复。
- 主节点 B 将刚刚执行的写命令复制给它的从节点 B1 、 B2 和 B3 。
三、参考资料:
http://redisdoc.com/topic/cluster-tutorial.html
时间: 2024-10-01 15:12:04