通过以下指令,构建集群(该指令只适用于5.0+版本):
/developer/redis-5.0.3/src/redis-cli --cluster create 172.26.40.223:6379 172.26.40.224:6379 172.26.40.225:6379 172.26.40.226:6379 172.26.40.227:6379 172.26.40.228:6379 --cluster-replicas 1简单解释一下这个指令,前半部分就是通过redis-cli调用集群模式(--cluster)下的create指令,将上述6个Redis实例构成集群(通过ip:port定位,所以可以单机部署集群,虽然非常鸡肋就是了)。最后部分,就是通过--cluster-replicas参数设定这个集群每个master都有1个slave实例。这里可以设置多个slave实例,并且slave实例还可以设置自己的slave实例。
成功运行后,可以见到如下页面:
这时候,直接yes确认即可,如果需要修改,可以后续调整。
确认后,可以看到如下图片:
这个时候就已经完成了分片集群的搭建。
集群校验通过以下命令,可以确认redis集群槽点分布的信息:
/developer/redis-5.0.3/src/redis-cli -c -p 6379 cluster nodes如果看到以下画面,表示槽点分片OK:
集群测试为了确认Redis分片集群的功能,我们来做一个简单的测试。
就是进入node2的redis实例(主实例),保存a=1数据。然后看是否可以通过node0(主实例,也可以从实例)来获取a对应的值。
上述图片中,还通过
CLUSTER KEYSLOT a来确认key=a的数据所在槽点,确实是node0重导向的15495槽点位。
集群操作前面已经完成了Redis分片集群的安全与确认,这里简单说一下集群操作,不感兴趣的朋友,可以直接跳过。
槽点整理由于数据倾斜与访问倾斜问题,新master入集群(新master进入集群时是不会分配槽点的)等问题,可能我们对于原先的槽点分布并不满意,所以需要将一个master实例上的槽点,移动一定数量到另一个master槽点。
可以通过以下指令实现:
/developer/redis-5.0.3/src/redis-cli --cluster reshard 172.26.40.223:6379 --cluster-from 45c1607ecf3d80f08cf6056d53f73a529ffc17de --cluster-to 2e1714431f76910db0e1808ce3a3a9b645d2c38f --cluster-slots 100 --cluster-yes该指令,将从id为45c1607ecf3d80f08cf6056d53f73a529ffc17de的master实例,划分100个槽点到id为2e1714431f76910db0e1808ce3a3a9b645d2c38f的master实例。
PS:master-id可以通过前面的cluster nodes等指令查看。
可以看到以下画面:
然后,通过
/developer/redis-5.0.3/src/redis-cli --cluster check 172.26.40.223:6379检查集群的槽点状态,可以看到以下画面:
可以明显看到槽点整理的结果。
删除节点接下来都比较简单,我就简单放上图片了。需要的地方,我会提示一下。