Redis设计与实现中,3.1版本的主从复制机制是怎样的?

2026-05-22 07:400阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

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

Redis设计与实现中,3.1版本的主从复制机制是怎样的?

《从复制+这是Redis设计与实现系列的文章,系列导航:Redis设计与实现笔记+SLAVEOF+新旧复制功能+新旧复制功能的实现为+同步+和+命令传播+:当刚刚连接到Master时,要做一个“》

主从复制

这是《Redis设计与实现》系列的文章,系列导航:Redis设计与实现笔记

SLAVEOF

新旧复制功能 旧版复制功能

旧版复制功能的实现为 同步命令传播

当刚连上Master时,要做一次全同步:

sequenceDiagram participant Slave participant Master Slave->>Master: SYNC Master->>Master: BGSAVE Master->>Master: 记录此时的命令到缓冲区中 Master->>Slave: 发送RDB Master->>Slave: 发送命令缓冲区中的命令

之所以要用到缓冲区是因为,在主节点进行 BGSAVE 的过程中如果有命令执行,那么我们要把这些命令也记录下来。

之后,主从节点之间只用 命令传播 就可以做到同步了,也就是说主节点执行什么命令,从节点跟着执行。(当然,一些随机、时间类的函数会直接转换成定值)

旧版复制的缺陷

如果从节点断线后重新连接,旧版复制功能的效率很低,因为为了让从服务器补足一小部分的确实却要进行一次 SYNC 命令

阅读全文

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

Redis设计与实现中,3.1版本的主从复制机制是怎样的?

《从复制+这是Redis设计与实现系列的文章,系列导航:Redis设计与实现笔记+SLAVEOF+新旧复制功能+新旧复制功能的实现为+同步+和+命令传播+:当刚刚连接到Master时,要做一个“》

主从复制

这是《Redis设计与实现》系列的文章,系列导航:Redis设计与实现笔记

SLAVEOF

新旧复制功能 旧版复制功能

旧版复制功能的实现为 同步命令传播

当刚连上Master时,要做一次全同步:

sequenceDiagram participant Slave participant Master Slave->>Master: SYNC Master->>Master: BGSAVE Master->>Master: 记录此时的命令到缓冲区中 Master->>Slave: 发送RDB Master->>Slave: 发送命令缓冲区中的命令

之所以要用到缓冲区是因为,在主节点进行 BGSAVE 的过程中如果有命令执行,那么我们要把这些命令也记录下来。

之后,主从节点之间只用 命令传播 就可以做到同步了,也就是说主节点执行什么命令,从节点跟着执行。(当然,一些随机、时间类的函数会直接转换成定值)

旧版复制的缺陷

如果从节点断线后重新连接,旧版复制功能的效率很低,因为为了让从服务器补足一小部分的确实却要进行一次 SYNC 命令

阅读全文