Redis的复制(Master/Slave)

1.主从模式

master->slave模式,master负责写,slave负责读
启动三个redis服务
节点初始化均为master节点,6380、6381同6379一样

Redis的复制(Master/Slave)

使用slaveof [ip] [端口号]来指定master节点
slaveof 127.0.0.1 6379
节点6380、6381如下

Redis的复制(Master/Slave)

现在的6379节点为master节点,它有两个slave节点6380、6381
master节点负责写(set)
slave节点负责读(get)
master节点写入的数据会复制到slave节点

Redis的复制(Master/Slave)

2.从从模式

slave->slave模式,上一个节点是下一个节点的master节点,可以有效减轻master的写压力,但中途变更转向会清空数据重新拷贝
配置方法
6380节点->6379节点:slaveof 127.0.0.1 6379
6381节点->6380节点:slaveof 127.0.0.1 6380
Redis的复制(Master/Slave)

哨兵模式(sentinel)

哨兵模式是通过redis下的sentinel.conf文件起作用的,名字一定要一样,新版本的redis会自带了这个文件,如果没有自己新建一个即可,配置内容如下
sentinel monitor 被监控的数据库名字 127.0.0.1 6379 1(主机挂掉后投票数达到这个数时接替成为主机)

Redis的复制(Master/Slave)

修改成功后我们启动哨兵模式
redis-sentinel /usr/local/redis-4.0.14/sentinel.conf

Redis的复制(Master/Slave)

启动成功后可以看到,6379那台是master节点,而6380和6381是slave节点
我们现在模拟当6379那台挂掉之后,看如何分配

Redis的复制(Master/Slave)Redis的复制(Master/Slave)

原有6379 master节点挂掉后,重新选举了6380 slave节点作为新的master节点

Redis的复制(Master/Slave)
Redis的复制(Master/Slave)

当原来master节点恢复了会怎样呢?两个master节点吗?
当我们再启动6379节点时,已经变为了slave节点

Redis的复制(Master/Slave)

再次查看6380节点时,6379节点已经成为它的新的slave节点

Redis的复制(Master/Slave)

当我们再打开sentinel.conf配置文件时,发现里面的master节点已经变为了6380节点

Redis的复制(Master/Slave)