主从模式
1.主从模式的特点
1、master可以进行读写操作,当读写操作导致数据变化时会自动将数据同步给从数据库
2、salve只读
3、master一对多salve
2.redis.conf配置
master配置
1 | bind 0.0.0.0 #任意ip都可以连接 |
slave配置
前面的设置和master一样;
port端口后面启动的时候指定
密码要和master的密码一致(后面做哨兵的时候需要)
1 | ##### slave特殊配置 |
3.redis启动命令
这里分三个节点,node1为master,node2、node3为slave
node1
1 | docker run -idt --privileged=true --net=host -v /hzzxj/redis/redis-ms/node1/redis.conf:/usr/local/etc/redis/redis.conf -v /hzzxj/redis/redis-ms/node1/data:/data --name=redis-node1 redis:5.0.14 redis-server /usr/local/etc/redis/redis.conf --port 6379 |
–net=host #使用主机端口;使用-p 进行端口映射时,测试发现master节点里slave的信息是127.0.0.1 6379,导致后面做哨兵时,哨兵无法获取争取的salve信息
–port 6379 #设置启动端口为6379
node2
1 | docker run -idt --privileged=true --net=host -v /hzzxj/redis/redis-ms/node2/redis.conf:/usr/local/etc/redis/redis.conf -v /hzzxj/redis/redis-ms/node2/data:/data --name=redis-node2 redis:5.0.14 redis-server /usr/local/etc/redis/redis.conf --port 6380 |
–port 6380 #设置启动端口为6380;因为在一台服务器上测试,6379已被master占用
node3
1 | docker run -idt --privileged=true --net=host -v /hzzxj/redis/redis-ms/node3/redis.conf:/usr/local/etc/redis/redis.conf -v /hzzxj/redis/redis-ms/node3/data:/data --name=redis-node3 redis:5.0.14 redis-server /usr/local/etc/redis/redis.conf --port 6381 |
–port 6381 #设置启动端口为6381
4.redis主从测试
1 | docker ps -a | grep redis- #查看容器状态 |

master节点操作
1 | docker exec -it redis-node1 redis-cli -p 6379 #进入容器,redis-cli连接redis;-p 指定端口 |


salve节点操作
可以看到slave能查询到刚刚master节点写入的信息。而且是只读状态。
哨兵模式
1.哨兵功能
1、监控redis集群是否正常
2、master出现故障,自动将slave转化为master
3、多哨兵配置的时候,哨兵之间也会自动监控
2.哨兵配置
这里设置三个哨兵,端口分别为26379,26380,26381,其他配置一样
1 | bind 0.0.0.0 |
3.哨兵启动命令
启动哨兵,用的也是redis的镜像
1 | # 哨兵1,端口26379 |
4.哨兵测试
查看容器状态
启动后哨兵配置文件会自动写入集群信息
哨兵启动日志
这时候把master节点停了;docker stop redis-node1;查看哨兵日志发现master迁移到6380端口的节点上
尝试往6380写入数据,可以写入了。再查看节点信息,成为了master节点,slave剩下6381

重新拉起node1节点,并不会把node1重新做为master,而是作为slave重新加入集群