最近研究了一下Redis 5.0主从复制部分的代码,其同步协议的握手流程比较繁琐,兼容了不同版本协议的差异,支持了增量同步数据。
当从启动后,会直接连接主节点,首先使用PSYNC命令尝试增量同步,如果主返回不支持、或者元数据与主衔接不上,则跳转全量同步。
顺便在写一些细节:
- 当KEY有TTL时,从节点不执行KEY过期的逻辑,当主上对应的KEY过期后,主节点会同步给从节点一条对应的
DEL
命令,用以删除从节点上对应的KEY。
整个握手流程与状态迁移:
参考
文档信息
- 本文作者:Neal Hu
- 本文链接:https://lrita.github.io/2019/02/28/redis-5.0-replication-shakehands/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)