Redis主从同步如何实现高效数据一致性?

2026-05-25 15:431阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1709个文字,预计阅读时间需要7分钟。

Redis主从同步如何实现高效数据一致性?

2.8版本前同步(sync)+执行步骤:服务器发送sync给主服务器,主服务器收到命令后,开始执行bgsave操作,生成RDB文件,并将生成的RDB文件同步给从服务器。同时,使用一个缓冲区记录从服务器当前的执行状态。

2.8版本以前 同步(snyc)

执行步骤:

  1. 从服务器发送snyc给主服务器
  2. 主服务器收到命令后,开始执行bgsave操作,将生成RDB文件,将生成的RDB文件同步给从服务。并使用一个缓冲区记录从现在开始的写命令
  3. 从服务载入接受到的RDB文件,期间不可进行其他操作。
  4. 主服务将缓冲区里的命令同步给从服务器
传播

同步完成之后,后续的命令都是通过传播的方式发送给从服务器的。即当主服务执行完一条命令后,将该命令发送给从服务,完成数据的同步。

缺陷

场景:

  • 首次复制,不存在问题,毕竟新连接上一个master服务器,则需要复制其全量的数据
  • 断开后重连复制,这是,仍是需要通过sync进行全量的复制,这就是很耗费资源的。毕竟如果断开时间短,如中间网络抖动,导致中间短暂性断开,再次复制全量数据,成本太高。

关于sync命令:

  1. 主服务器需要执行bgsave命令来生成RDB文件,这个操作会耗费主服务器的大量CPU、内存和磁盘IO资源。
  2. 主服务器将RDB文件发送给从服务器,会消耗双方的网络资源(带宽和流量)。
  3. 接受到RDB文件后,从服务器需要载入RDB文件,这个载入期间,从服务器因为阻塞而没有办法处理命令请求。
阅读全文

本文共计1709个文字,预计阅读时间需要7分钟。

Redis主从同步如何实现高效数据一致性?

2.8版本前同步(sync)+执行步骤:服务器发送sync给主服务器,主服务器收到命令后,开始执行bgsave操作,生成RDB文件,并将生成的RDB文件同步给从服务器。同时,使用一个缓冲区记录从服务器当前的执行状态。

2.8版本以前 同步(snyc)

执行步骤:

  1. 从服务器发送snyc给主服务器
  2. 主服务器收到命令后,开始执行bgsave操作,将生成RDB文件,将生成的RDB文件同步给从服务。并使用一个缓冲区记录从现在开始的写命令
  3. 从服务载入接受到的RDB文件,期间不可进行其他操作。
  4. 主服务将缓冲区里的命令同步给从服务器
传播

同步完成之后,后续的命令都是通过传播的方式发送给从服务器的。即当主服务执行完一条命令后,将该命令发送给从服务,完成数据的同步。

缺陷

场景:

  • 首次复制,不存在问题,毕竟新连接上一个master服务器,则需要复制其全量的数据
  • 断开后重连复制,这是,仍是需要通过sync进行全量的复制,这就是很耗费资源的。毕竟如果断开时间短,如中间网络抖动,导致中间短暂性断开,再次复制全量数据,成本太高。

关于sync命令:

  1. 主服务器需要执行bgsave命令来生成RDB文件,这个操作会耗费主服务器的大量CPU、内存和磁盘IO资源。
  2. 主服务器将RDB文件发送给从服务器,会消耗双方的网络资源(带宽和流量)。
  3. 接受到RDB文件后,从服务器需要载入RDB文件,这个载入期间,从服务器因为阻塞而没有办法处理命令请求。
阅读全文