Redis设计与实现中,3.1版本的主从复制机制是怎样的?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1450个文字,预计阅读时间需要6分钟。
《从复制+这是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设计与实现系列的文章,系列导航: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 命令。

