414 字
2 分钟
面试鸭-Redis 主从复制的实现原理是什么?
Redis 主从复制的实现原理是什么?
Redis的实现原理可以分为三个阶段来讲解:
第一阶段:主从建立连接,从节点进行全量复制。
- 从节点会发送
PSYNC ? -1命令给主节点 - 主节点会创建一个子线程去生成RDB,并且接下来新的写命令都会存入复制缓冲区(Replication Buffer)中。
- 将RDB发给从节点,从节点清空旧数据加载RDB。
- 加载完成后,主节点发送复制缓冲区中的写命令给子节点
- 子节点执行命令完成全量复制。
第二阶段:命令传播(长连接) 主从建立长连接,之后每当有新的写命令时都会异步发送给从节点让从节点也执行,并且还有写入一个环形缓冲区,便于增量同步时使用。 主从连接时会互相发心跳包来确认对方状态。
第三阶段:断线重连,增量同步 如果出现网络波动导致从节点掉线了一会又连上了,这时候会进行增量同步(要求从节点目前读到的值还在环形缓冲区中能找到) 从节点和主节点都会维护一个偏移量表示当前读取位置,根据这个偏移量能确认数据是否一致。 主节点会确认从节点的偏移量是否还在环形缓冲区中,如果是则从这个偏移量的位置发送数据给从节点,让从节点执行增量数据。否则会进行全量复制
问题
面试鸭-Redis 主从复制的实现原理是什么?
http://www.shineacz.top/posts/面试鸭-redis-主从复制的实现原理是什么/