2.8 版以前,Redis 通过同步(sync)和指令传播(command propagate)两个操作完成同步
- 同步(sync):将从节点的数据库状态更新至与主节点的数据库状态一致
- 指令传播(command propagate):主节点数据被修改,会主动向从节点发送执行的写指令,从节点执行之后,两个节点数据状态又保持一致
2.8 版开始新增 PSYNC 指令,PSYNC 具有两种模式:
- 完整重同步(full resynchronization),与 SYNC 过程基本一致
- 部分重同步(partial resynchronization),借助复制偏移量、复制积压缓冲区、服务器运行 ID ,完成主从节点断开连接后,从节点重连主节点后,条件允许,主节点将连接断开期间执行的写指令发送给从节点,从节点接收并执行写指令,将数据库更新至主节点当前状态