Redis的master/slave复制也就是主从复制,是Redis实现数据冗余和读写分离的重要功能,通过主节点向从节点同步数据,可以让多个从节点拥有和主节点一致的数据副本。

什么是Redis master/slave复制
Redis的主从复制是指将一个Redis节点(主节点,master)的数据复制到一个或多个其他Redis节点(从节点,slave)的过程。主节点负责处理写请求,从节点默认只能处理读请求,并且会实时同步主节点的数据变更。
这种架构的核心作用主要有两点:一是实现数据冗余,避免单节点故障导致数据丢失;二是分担读请求压力,提升系统的整体读性能,适合读多写少的业务场景。
主从复制的实现原理
Redis的主从复制主要分为全量同步和增量同步两个阶段:
- 全量同步:从节点第一次连接主节点,或者从节点断开连接时间过长,主节点会生成当前数据的RDB快照发送给从节点,从节点加载快照完成数据初始化,之后主节点再把生成快照期间产生的写命令发送给从节点,保证数据一致。
- 增量同步:从节点完成全量同步后,主节点会把后续的写命令实时发送给从节点,从节点执行这些命令保持数据同步,Redis 2.8之后通过复制偏移量和复制积压缓冲区实现断连后的增量同步,减少数据传输量。
主从复制配置步骤
Redis的主从复制配置非常简单,不需要修改主节点的配置,只需要在从节点做相关设置即可,以下是具体步骤:
1. 准备两个Redis实例
假设我们已经有两个Redis实例,主节点运行在6379端口,从节点运行在6380端口,两个实例的配置文件分别为redis-6379.conf和redis-6380.conf。
2. 配置从节点
打开从节点的配置文件redis-6380.conf,添加以下配置:
# 指定主节点的IP和端口 replicaof 127.0.0.1 6379 # 如果主节点设置了密码,需要配置主节点密码 # masterauth 主节点密码 # 从节点默认只读,不需要额外修改,默认配置就是replica-read-only yes
如果是已经启动的Redis实例,也可以直接在客户端执行命令设置主从关系,不需要重启实例:
# 连接6380端口的从节点客户端 redis-cli -p 6380 # 执行命令设置主节点 REPLICAOF 127.0.0.1 6379
3. 验证主从复制是否生效
可以在主节点写入数据,然后到从节点查询,验证数据是否同步:
# 主节点写入数据 redis-cli -p 6379 127.0.0.1:6379> SET test_key "hello_redis" OK # 从节点查询数据 redis-cli -p 6380 127.0.0.1:6380> GET test_key "hello_redis"
也可以在主节点执行INFO replication命令,查看主从节点的连接状态,确认从节点已经正确连接。
主从复制的注意事项
- 主节点故障后,需要手动将从节点提升为主节点,或者使用Redis Sentinel、Redis Cluster等工具实现自动故障转移,原生主从复制不支持自动切换。
- 主节点处理写请求的同时需要向多个从节点同步数据,如果从节点数量过多,会影响主节点的性能,一般建议主节点挂载的从节点数量不超过3个。
- 从节点同步数据时会有一定的延迟,如果对数据实时性要求极高的场景,需要评估延迟是否在可接受范围内。
总结
Redis的master/slave复制是实现数据冗余和读写分离的基础功能,配置简单且实用性强,开发者只需要掌握基本的配置方法和同步原理,就能应对大部分常规的业务场景。如果需要更高的可用性,可以在主从复制的基础上搭配哨兵模式使用,进一步提升系统的稳定性。
Redismaster/slave复制主从配置数据同步高可用修改时间:2026-05-24 23:21:07