redis主从节点数据同步

Redis主从节点在数据同步阶段,主节点会根据当前状态的不同执行的不同复制操作,包括全量复制和部分复制。

  • 全量复制:用于首次复制或者其他不能进行部分复制的情况。全量复制是一个非常重的操作,一般我们都要规避它。

  • 部分复制:用于从节点短暂中断的情况(网络中断、短暂的服务宕机)。部分复制是一个非常轻量级的操作,因为它只需要将中断期间的命令同步给从节点即可,相比于全量复制,它显得更加高效。

Redis 2.8 以前,从节点向主节点发送 sync 命令请求同步数据,此种方式是全量复制。在 Redis 2.8 以后,Redis 支持部分复制,发送的命令是 psync。

全量复制场景:第一次建立连接进行数据同步是全量复制,还有以下几种情况也是全量复制:

     1. 第一次建立连接进行数据同步是全量复制。

     2. 从节点发送 psync {runid} {offset} 时,runid 与当前主节点的 runid 不匹配则进行全量复制。

     3. 从节点所需要同步数据的偏移量 offset 不在复制积压缓冲区中,也会进行全量复制。

部分复制场景

     1. 从节点发送 psync {runid} {offset} 时,如请求的偏移量在复制积压缓冲区中,则主节点就将剩余的数据补发给从节点,保持主从节点数据一致。


版权声明:本文为astronautyi原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。