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