Redis主从复制

主从复制有两种情况,第一种情况:一主多从(Master节点只有一个);第二种情况:链式(Master节点也可以是从节点)。
这里我们演示三个节点。首先,将redis所在的文件复制两份。如下图:
Redis主从复制
然后更改相关配置文件,就是所谓的端口号。打开redis.windows.conf文件,找到
Redis主从复制
分别将端口号改成6380和6381。
然后分别打开三个cmd窗口,将端口为6379 6380 6381 分别把服务启动起来,分别在三个文件目录下运行。

redis-server ./redis.windows.conf

实验结果如下:

Redis主从复制
然后再打开三个cmd端口,开启认证

redis-cli -p 6379

实验结果如下:
Redis主从复制
现在三个没有任何关系,每个都是master节点,可以使用info replication 查看一下。
实验结果如下:
Redis主从复制
现在开始配置主从关系,我们这里配置的是第一种情况,即一主多从。将端口号6379设置master节点,6380和6381端口为从节点。

slaveof 127.0.0.1 6379

实验结果如下:
Redis主从复制
现在开始设置哨兵。
这里采用手动设置方式,即修改配置文件,自己在redis的根目录下设置一个sentinel.conf的配置文件,里面的内容包含端口号和所属Master节点的相关信息,配置如下:
端口号为6379的配置文件如下:

port 26379
sentinel monitor mymaster 127.0.0.1 6379 1

端口号为6380的配置文件如下:

port 26380
sentinel monitor mymaster 127.0.0.1 6379 1

端口号为6381的配置文件如下:

port 26381
sentinel monitor mymaster 127.0.0.1 6379 1

其中mymaster是给master取的别名。
实验结果如下:
Redis主从复制

然后打开三个cmd窗口,把哨兵启动起来。

redis-server ./sentinel.conf --sentinel

实验结果如下:
Redis主从复制
然后再打开一个cmd窗口来进行操作。
这时可以把master节点停掉,然后另外两个节点就开始监听,一定时间之后,就在另外两个节点中指定一个节点作为master节点。若此刻再恢复原本的master节点(6379端口),该节点则自动连接到新master节点的后面。