Redis主从同步如何实现高效数据一致性?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1709个文字,预计阅读时间需要7分钟。
2.8版本前同步(sync)+执行步骤:服务器发送sync给主服务器,主服务器收到命令后,开始执行bgsave操作,生成RDB文件,并将生成的RDB文件同步给从服务器。同时,使用一个缓冲区记录从服务器当前的执行状态。
2.8版本以前 同步(snyc)执行步骤:
- 从服务器发送
snyc给主服务器 - 主服务器收到命令后,开始执行
bgsave操作,将生成RDB文件,将生成的RDB文件同步给从服务。并使用一个缓冲区记录从现在开始的写命令 - 从服务载入接受到的RDB文件,期间不可进行其他操作。
- 主服务将缓冲区里的命令同步给从服务器
同步完成之后,后续的命令都是通过传播的方式发送给从服务器的。即当主服务执行完一条命令后,将该命令发送给从服务,完成数据的同步。
缺陷场景:
- 首次复制,不存在问题,毕竟新连接上一个master服务器,则需要复制其全量的数据
- 断开后重连复制,这是,仍是需要通过
sync进行全量的复制,这就是很耗费资源的。毕竟如果断开时间短,如中间网络抖动,导致中间短暂性断开,再次复制全量数据,成本太高。
关于sync命令:
- 主服务器需要执行
bgsave命令来生成RDB文件,这个操作会耗费主服务器的大量CPU、内存和磁盘IO资源。 - 主服务器将RDB文件发送给从服务器,会消耗双方的网络资源(带宽和流量)。
- 接受到RDB文件后,从服务器需要载入RDB文件,这个载入期间,从服务器因为阻塞而没有办法处理命令请求。
本文共计1709个文字,预计阅读时间需要7分钟。
2.8版本前同步(sync)+执行步骤:服务器发送sync给主服务器,主服务器收到命令后,开始执行bgsave操作,生成RDB文件,并将生成的RDB文件同步给从服务器。同时,使用一个缓冲区记录从服务器当前的执行状态。
2.8版本以前 同步(snyc)执行步骤:
- 从服务器发送
snyc给主服务器 - 主服务器收到命令后,开始执行
bgsave操作,将生成RDB文件,将生成的RDB文件同步给从服务。并使用一个缓冲区记录从现在开始的写命令 - 从服务载入接受到的RDB文件,期间不可进行其他操作。
- 主服务将缓冲区里的命令同步给从服务器
同步完成之后,后续的命令都是通过传播的方式发送给从服务器的。即当主服务执行完一条命令后,将该命令发送给从服务,完成数据的同步。
缺陷场景:
- 首次复制,不存在问题,毕竟新连接上一个master服务器,则需要复制其全量的数据
- 断开后重连复制,这是,仍是需要通过
sync进行全量的复制,这就是很耗费资源的。毕竟如果断开时间短,如中间网络抖动,导致中间短暂性断开,再次复制全量数据,成本太高。
关于sync命令:
- 主服务器需要执行
bgsave命令来生成RDB文件,这个操作会耗费主服务器的大量CPU、内存和磁盘IO资源。 - 主服务器将RDB文件发送给从服务器,会消耗双方的网络资源(带宽和流量)。
- 接受到RDB文件后,从服务器需要载入RDB文件,这个载入期间,从服务器因为阻塞而没有办法处理命令请求。

