集群节点创建
redis-cli --cluster create --cluster-replicas 1 192.168.150.101:7001 192.168.150.101:7002 192.168.150.101:7003 192.168.150.101:8001 192.168.150.101:8002 192.168.150.101:8003
redis-cli --cluster或者./redis-trib.rb:代表集群操作命令create:代表是创建集群--replicas 1或者--cluster-replicas 1:指定集群中每个master的副本个数为1,此时节点总数 ÷ (replicas + 1)得到的就是master的数量。因此节点列表中的前n个就是master,其它节点都是slave节点,随机分配到不同master(相当于对半拆分集群节点)
这里输入yes,则集群开始创建
集群命令状态查看
redis-cli -p 7001 cluster nodes
集群操作时
redis-cli -c -p 7001
redis分片集群
1.散列插槽
Redis会把每一个master节点映射到0~16383共16384个插槽(hash slot)上
数据key不是与节点绑定,而是与插槽绑定。redis会根据key的有效部分计算插槽值,分两种情况:
- key中包含"{}",且“{}”中至少包含1个字符,“{}”中的部分是有效部分
- key中不包含“{}”,整个key都是有效部分
例如:key是self,那么就根据self计算,如果是{itcast}self,则根据itcast计算。计算方式是利用CRC16算法得到一个hash值,然后对16384取余,得到的结果就是slot值(这样可以使相同的数据通过key计算的方式散列在相同的插槽中,节省了节点切换带来的性能损耗问题)
2.集群伸缩
集群新增节点-新增的节点默认为master,且分配的插槽为0
redis-cli --cluster add-node 192.168.150.101:7004 192.168.150.101:7001
插槽移动:redis-cli reshard
3手动故障转移
利用cluster failover命令可以手动让集群中的某个master宕机,切换到执行cluster failover命令的这个slave节点,实现无感知的数据迁移。其流程如下:
这种failover命令可以指定三种模式:
- 缺省:默认的流程
- force:省略了对offset的一致性校验
- takeover:直接执行第5歩,忽略数据一致性、忽略master状态和其它master的意见