一般redis 做主从复制的话,不可能只用一个。这样一但发生故障,丢失数据就比较危险。

优势:

1: 主从备份 防止主机宕机
2: 读写分离,分担master的任务
例如:大量计算的时候,可以用交给一些特定的计算机。
3: 任务分离,如从服分别分担备份工作与计算工作

原理图:


方式一:

两台redis互为主从 高可用 redis 双主_两台redis互为主从 高可用

方式二:

两台redis互为主从 高可用 redis 双主_服务器_02

解释这两种方式的区别是:
第一种是:两个从机监视一台主机,当主机宕机之后,会切换到slave1上做主机。同时更改slave2 的配置,开始监视slave1。
第二种是:配置slave1 监视master,配置slave2 监视slave1。一但master宕机之后,切换到slave1 为主机,这时候slave2不用更改任何配置。

主从通信过程

两台redis互为主从 高可用 redis 双主_主从复制_03

①master跟slave同步,配置的sync自动同步。
②然后master dump出rdb 文件给slave 。 slave拿出整块的rdb塞到自己的内存里。
③在这个过程中如果又有新的命令出现,这个命令将会被缓存到内存的aof队列中。等rdb完成,再将aof 的内容缓冲到slave中。
备注:如果对rdb和aof两种持久化方式模糊,可以先看博客【Redis系列】Redis数据持久化

配置集群:

Master配置:

1:关闭rdb快照(备份工作交给slave)

2:可以开启aof

slave配置:

1: 声明slave-of

2: 配置密码[如果master有密码] 从 80 81修改配置文件

原:

两台redis互为主从 高可用 redis 双主_集群_04


改为:

两台redis互为主从 高可用 redis 双主_redis_05


3: [某1个]slave打开 rdb快照功能

4: 配置是否只读[slave-read-only]

方案:

配置6380 81 都是6379 的从服务器。
81的rdb aof 都禁用。80端口,aof 禁,rdb打开。 主服务器,rdb禁用,aof打开。
修改主配置文件的rdb 。因为有从服务器分担,所以不必要。主服务器的aof要最快。毕竟从服务器也需要延迟。从服务器的aof 可以禁掉。

测试结果:

主服务器上设置数值,如果成功的话,从服务器也能读到这个值。

主:

两台redis互为主从 高可用 redis 双主_服务器_06


从:

两台redis互为主从 高可用 redis 双主_redis_07