对TinyRedis中主从复制的理解

TinyRedis 中有 master 和 replica 两种角色。master 作为服务端监听端口,既可以管理普通客户端连接,也可以接收 replica 建立的复制连接。replica 本身也是一个服务端,但对于 master 来说,它会额外作为客户端主动创建 socket fd 并 connect master。

连接建立后,replica 会通过 PING、REPLCONF、PSYNC 和 master 进行复制握手。第一次同步时 replica 发送 PSYNC ? -1,master 返回 FULLRESYNC,并把当前内存快照转换成 RESP 命令流发送给 replica,replica 在本地回放这些命令。

后续普通客户端只写 master。master 执行写命令成功后,会把这条写命令编码成 RESP Array,追加到 replication backlog,并写入所有 replica 连接的 writeBuf 进行传播。replica 收到后继续回放命令,从而跟上 master 的数据变化。

如果 replica 断线重连,会携带之前保存的 masterReplId 和 offset 发送 PSYNC <replid> <offset>。master 判断 replid 是否匹配、offset 是否仍在 backlog 范围内;如果满足条件,就返回 CONTINUE 并补发缺失命令,实现 partial resync;否则返回 FULLRESYNC 重新全量同步。

相关推荐
fiveym5 小时前
01 - iPXE + Clonezilla 网络装机原理解析
linux·运维·服务器·网络
虎头金猫6 小时前
如何在群晖NAS上通过Docker部署CloudSaver?群晖部署CloudSaver教程|聚合资源搜索并实现远程访问
运维·服务器·网络·python·docker·容器·pandas
dog2506 小时前
网络优化,还是降低各阶矩
服务器·网络·php
反转180度6 小时前
Qt 6 + C++17 实现 SFTP 批量部署:工业设备运维工具实战解析
运维·c++·qt
雨辰AI7 小时前
RAG 知识库搭建:基于人大金仓构建信创运维问答机器人|全栈国产化落地完整版
运维·ai·机器人·ai编程
-今昭-7 小时前
Ansible
linux·运维·ansible
星野川崎2067 小时前
电商多店运维:云机长期挂机频繁掉线、账号无故风控原因剖析与解决方案
大数据·运维·云计算·电商
IT邦德9 小时前
Dify1.6基于ubuntu系统的部署实战
linux·运维·ubuntu
非凡ghost10 小时前
分区助手:Windows 磁盘管理的“瑞士军刀“,分区调整不再怕丢数据
服务器·windows·电脑·软件需求
蓝速科技10 小时前
蓝速科技会议电子门牌规模化部署与运维成本实测
运维·科技