• 用docker启动三个redis容器
    docker run --name redis-6379 -p 6379:6379 -d redis:3.2 redis-server
    docker run --name redis-6380 -p 6380:6379 -d redis:3.2 redis-server
    docker run --name redis-6381 -p 6381:6379 -d redis:3.2 redis-server
  • 配置reids集群
    docker inspect containerid(容器ID)
    2、三个redis的内网ip
    redis-6379:172.17.0.3:6379
    redis-6380:172.17.0.4:6379
    redis-6381:172.17.0.5:6379
  • 进入docker容器内部,查看当前redis角色(主master还是从slave)命令:info replication)
    127.0.0.1:6379> info replication
    Replication
    role:master
    connected_slaves:0
    master_replid:a44f60e68f4d128750c2d09a00c9d4a1b6b643d1
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:0
    second_repl_offset:-1
    repl_backlog_active:0
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:0
    repl_backlog_histlen:0
  • 当前3台redis都是master角色,使用redis-cli命令修改redis-6380、redis-6381的主机为172.17.0.3:6379
    [root@localhost ~]# docker exec -it redis-6381 redis-cli
    127.0.0.1:6379> slaveof 172.17.0.3 6379
    OK
  • 再次查看主机info,已经有两个从机了(.4 和 .5)

1、对主机写操作set key 1,丛机也能读到。主机挂掉之后,从机仍然是从机,依旧能读。当主机恢复之后,就能读到新的

2、如果是使用的命令行,配置的主从,从机挂掉了后重启,立马变成主机。当重新配了主机后,立马能读到主机的数据。发生全量复制

3、当主机挂掉之后,可以使用slaveof no one(手动)

哨兵模式(主动)

图片说明
图片说明
主机挂了之后,会发生心跳检测,默认三分钟后,哨兵会随机挑选从机变成主机
如果此时主机回来了,也只能变成从机