Redis主从之间如何同步

Redis 主从同步的过程主要包括以下几个步骤:

1. 初次同步(全量复制)

当一个 Redis 从节点(slave)第一次连接到主节点(master)时,通常会执行全量复制。这一过程包括以下步骤:

  • 建立连接:从节点向主节点发送 SYNC 或者 PSYNC 命令。
  • 主节点生成快照:主节点接收到命令后,会执行 BGSAVE 命令生成 RDB 快照,并将快照保存到磁盘。
  • 传输快照:主节点将 RDB 文件发送给从节点,从节点接收到后会将其加载到内存中,替换原有的数据。
  • 同步增量数据:在生成快照期间,主节点仍在处理新的写操作。主节点会将这些操作命令缓存在内存中,并在快照传输完成后,将这些缓冲区中的命令发送给从节点,从节点再依次执行这些命令以达到数据同步。

2. 增量同步

  • 命令传播:在初次同步完成后,主节点的每一个写操作都会被发送给从节点,从节点接收到命令后会立即执行,确保主从数据的一致性。这种方式称为增量同步。
  • AOF 文件同步:如果 Redis 配置了 AOF 持久化,主节点还会将 AOF 日志中的命令发送给从节点进行同步。

3. 断线重连(部分复制)

  • PSYNC 命令:Redis 2.8 版本引入了 PSYNC 命令,用于支持部分复制。当从节点因网络问题与主节点断开连接并重新连接时,主节点可以只发送断开期间的增量数据,而不需要进行全量复制。
  • 复制偏移量和复制积压缓冲区:主节点会为每个从节点维护一个复制偏移量,并在主节点上保留一个固定长度的复制积压缓冲区。该缓冲区存储了最近的写操作命令。如果从节点的偏移量落在缓冲区内,主节点只需将这部分数据发送给从节点。如果偏移量不在缓冲区范围内,从节点则需要进行全量复制。

4. 同步完成后的心跳机制

主从节点之间还会定期发送心跳包(PING-PONG)来检测连接的健康状态以及从节点的复制偏移量是否正确。

5. 主从切换

如果主节点故障,从节点可以被手动或者通过工具(如 Redis Sentinel)提升为主节点,原来的从节点可以继续成为新主节点的从节点,并进行数据同步。
Redis 的主从同步机制设计较为简单且高效,但对于网络和磁盘性能有一定要求,尤其是在全量复制阶段。为了保证高可用性,通常会结合 Redis Sentinel 或 Redis Cluster 进行集群管理和主从故障切换。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值