Redis主从模式详解(附带实例)
本节带读者熟悉 Redis 主从模式,掌握 Redis 主从模式的部署方法,了解 Redis 主从模式的应用方法。
此后,Master 节点继续将所有已经收集的修改命令和新的修改命令依次传送给 Slave 节点, Slave 节点在本地执行这些修改命令,从而达到最终的数据同步。
主从复制的架构如下图所示:

图 1 主从复制的架构
如果 Master 节点和 Slave 节点之间的连接出现中断现象,那么 Slave 节点可以自动重连 Master 节点。连接成功后,一次完全同步将被自动执行。
如果 Master 节点死机,Slave 节点并不会竞选为 Master 节点,这是因为每个客户端在连接 Redis 实例时指定了 IP 地址和端口号。
如果所连接的 Redis 实例因为故障下线了,而主从模式没有提供客户端可连接的服务 IP 地址,这时需要手动更改客户端配置,重新连接新 IP 地址。
① 执行 sudo apt-get install redis-server 命令,安装 Redis:
② 安装完成后,修改 Master 节点的配置文件 sudo vim /etc/redis/redis.conf,并添加授权密码,如图 2 和图 3 所示。

图 2 修改为该服务器的IP地址

图 3 添加授权密码
③ 保存配置文件,使用 sudo/etc/init.d/redis-server restart 命令(或者 service redis restart)重启 Redis 服务,如下图所示:

图 4 重启 Redis 服务
① 执行 sudo apt-get install redis-server 命令,安装 Redis。
② 安装完成后,修改 Slave 节点的配置文件 sudo vim /etc/redis/redis.conf,并添加授权密码,这和 Master 节点的配置一样。由于 Master 节点设置了密码,因此 Slave 节点需要配置 Master 节点的授权。这里使用 masterauth 进行配置,如下图所示:

图 5 使用 masterauth 配置 Slave 节点
③ 保存配置文件,重启 Redis,至此,两个节点的 Redis 主从模式已经配置完成。
下面使用 info Replication 查看是否已经关联主服务,如下图所示:

图 6 主从模式配置成功
Slave 节点出现了 master_link_status:up 提示,这表示关联成功。

图 7 使用 auth 命令进行授权
Redis主从复制的作用和架构
主从复制的工作原理如下:- Slave 节点服务启动并连接到 Master 节点之后,主动发送一个同步命令。
- Master 节点收到同步命令后将启动后台存盘进程,同时收集所有接收到的用于修改数据集的命令;
- 当后台进程执行完毕后,Master 节点将整个数据库文件传送给 Slave 节点,完成一次完全同步;
- Slave 节点接收到数据库文件后将其存盘并加载到内存中;
此后,Master 节点继续将所有已经收集的修改命令和新的修改命令依次传送给 Slave 节点, Slave 节点在本地执行这些修改命令,从而达到最终的数据同步。
主从复制的架构如下图所示:

图 1 主从复制的架构
如果 Master 节点和 Slave 节点之间的连接出现中断现象,那么 Slave 节点可以自动重连 Master 节点。连接成功后,一次完全同步将被自动执行。
如果 Master 节点死机,Slave 节点并不会竞选为 Master 节点,这是因为每个客户端在连接 Redis 实例时指定了 IP 地址和端口号。
如果所连接的 Redis 实例因为故障下线了,而主从模式没有提供客户端可连接的服务 IP 地址,这时需要手动更改客户端配置,重新连接新 IP 地址。
部署Redis主从模式
1) 配置Master节点
Master 节点的 IP 地址为 192.168.43.246。Master 节点的具体配置步骤如下:① 执行 sudo apt-get install redis-server 命令,安装 Redis:
② 安装完成后,修改 Master 节点的配置文件 sudo vim /etc/redis/redis.conf,并添加授权密码,如图 2 和图 3 所示。

图 2 修改为该服务器的IP地址

图 3 添加授权密码
③ 保存配置文件,使用 sudo/etc/init.d/redis-server restart 命令(或者 service redis restart)重启 Redis 服务,如下图所示:

图 4 重启 Redis 服务
2) 配置Slave节点
要配置 Slave 节点,需要先确保 Slave 节点和 Master 节点能够互相通信。Slave 节点的 IP 地址为 192.168.43.83,Slave 节点的配置步骤如下:① 执行 sudo apt-get install redis-server 命令,安装 Redis。
② 安装完成后,修改 Slave 节点的配置文件 sudo vim /etc/redis/redis.conf,并添加授权密码,这和 Master 节点的配置一样。由于 Master 节点设置了密码,因此 Slave 节点需要配置 Master 节点的授权。这里使用 masterauth 进行配置,如下图所示:

图 5 使用 masterauth 配置 Slave 节点
③ 保存配置文件,重启 Redis,至此,两个节点的 Redis 主从模式已经配置完成。
下面使用 info Replication 查看是否已经关联主服务,如下图所示:

图 6 主从模式配置成功
Slave 节点出现了 master_link_status:up 提示,这表示关联成功。
主从复制模式实践
1) 登录主/从数据库
这里使用的命令为 redis-cli -h 192.168.43.246,这里必须通过 -h 指定启动服务节点的 IP 地址。由于 Master 节点设置了授权密码 123456,因此必须使用 auth 命令进行授权,否则无权执行操作,如下图所示:
图 7 使用 auth 命令进行授权
2) 在 Master 节点上添加一个键值对
代码如下:192.168.43.246:6379> set testkey "wangwu" OK # 查看是否已经正确插入 192.168.43.246:6379> keys * 1) "testkey"
3) 在Slave节点上查看数据同步情况
在 Slave 节点上查看 Master 节点上添加的键值对是否已经同步过来,若已经同步则表示主从模式配置成功。具体代码如下:192.168.43.83:6379> keys * 1) "testkey" 2) "name1" 3) "name2" 192.168.43.83:6379> get testkey "wangwu"