Redis主从(Replica)模式

Eave 2026.05.07

一、主从复制的核心原理

1、建立连接阶段:从节点执行REPLICAOF命令后,会记录主节点的IP和端口,并尝试建立Socket连接。

2、同步数据阶段:连接建立后,主节点会执行bgsave生成RDB文件,同时将新到达的写命令记录到缓冲区。RDB文件传输完成后,从节点加载到内存。接着主节点将缓冲区的命令发送给从节点执行。

3、命令传播阶段:后续主节点的每条写命令,都会异步发送给从节点执行。这样就保证了数据的最终一致性。

注意:复制是异步的,所以从节点的数据永远不可能和主节点保持百分之百同步,会存在一定延迟。

二、每个节点安装Redis

安装方法:Redis7在Linux下的安装

三、配置从节点

修改每个从节点redis.conf文件

# 主从复制配置
replicaof 192.168.10.8 6379     # 指定主节点的IP和端口
masterauth 123456               # 主节点有密码时配置主节点密码
replica-read-only yes           # 从节点只读,建议保持

# 复制缓冲区优化
repl-backlog-size 128mb         # 增大缓冲区,避免频繁全量复制
repl-diskless-sync yes          # 调整从节点同步策略
repl-backlog-ttl 3600           # 缓冲区保留1小时

# 网络优化
repl-timeout 60                 # 复制超时时间(秒)

# 数据量较大时的优化
client-output-buffer-limit replica 512mb 256mb 60   # 从节点输出缓冲区限制
repl-diskless-sync yes                              # 无盘复制,减少磁盘IO
repl-diskless-sync-delay 5                          # 无盘复制延迟时间

按顺序启动主从节点

/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf

四、验证主从关系

分别进入主从Redis命令行

127.0.0.1:6379> INFO replication

主节点执行命令后有以下输出

# Replication
role:master
connected_slaves:2
slave0:ip=192.168.10.10,port=6379,state=online,offset=167655069,lag=1
slave1:ip=192.168.10.12,port=6379,state=online,offset=167655069,lag=0
master_replid:acf00664d38256f49f66de4d585973e629219e92
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:167655069
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:166606494
repl_backlog_histlen:1048576

从节点执行命令后有以下输出

# Replication
role:slave
master_host:192.168.10.8
master_port:6379
master_link_status:up