Redis集群操作
Slot
一个 Redis 集群包含 16384 个哈希槽(hash slot),每个键都属于这 16384 个哈希槽的其中一个。
集群使用公式 CRC16(key) % 16384 来计算键 key 属于哪个槽, 其中 CRC16(key) 语句用于计算键 key 的 CRC16 校验和 。
集群中的每个节点负责处理一部分哈希槽。 举个例子, 一个集群可以有三个节点, 其中:
- 节点 1 负责处理 0 号至 5500 号哈希槽。
- 节点 2 负责处理 5501 号至 11000 号哈希槽。
- 节点 3 负责处理 11001 号至 16384 号哈希槽。
命令执行
set k1 v1
根据k1计算出的槽值进行切换节点,并存入数据。
不在一个slot下的键值,是不能使用mget、mset等多建操作。
mset k1 v1 k2 v2 k3 v3
可以通过{}来定义组的概念,从而是key中{}内相同内容的键值对放到同一个slot中
mset k1{test} v1 k2{test} v2 k3{test} v3
故障恢复
-
关闭6379服务器,进入redis-cli执行cluster nodes
6379服务器fail,6390成为了新的master
-
重新启动6379服务器,再次查看,6379成为了Slave