redis 集群原理
redis集群原理
1.redis的每个节点都可以相互访问
2.每个节点都会有一个slot(插槽),这个插槽记录的是一个槽范围。
redis的key会经过crc16进行计算,得出来的数值对槽的总数16383取余得到槽值,根据这个槽值找到对应的节点。
redis如何判断集群可用
1.当redis没有开启兼容部分master失效,如集群半数以上节点判断某个节点ping不通且这个节点也没有从节点则整个集群failed
2.当开始部分失效,如果集群中半数以上的master节点挂掉则集群failed
docker部署redis
本地环境,使用的windows(穷,没有mac)
启动docker容器
docker run -dp 6380:6379 --name redis-master1 -v E:/docker:/dataredis --cluster-enabled yes --cluster-config-file nodes-node-1.conf
docker run -dp 6381:6379 --name redis-master2 -v E:/docker:/dataredis --cluster-enabled yes --cluster-config-file nodes-node-2.conf
docker run -dp 6382:6379 --name redis-master3 -v E:/docker:/dataredis --cluster-enabled yes --cluster-config-file nodes-node-3.conf
配置集群
1.首先我们需要知道各个docker容器的IP地址是多少,以redis-master1做演示,其他同理。
docker inspect redis-master1
我的三个容器IP地址
redis-master1 172.17.0.2
redis-master2 172.17.0.3
redis-master3 172.17.0.4
2.随意进入一台机器配置集群
docker exec -it redis-master1 /bin/bash
redis-cli --cluster create 172.17.0.2 6379 172.17.0.3 6379 172.17.0.4 6379
3.测试数据
docker exec -it redis-master1 redis-cli -c
set nice lyp
docker exec -it redis-master2 redis-cli -c
get nice