redis主从同步机制

主从同步

在使用Redis中的过程中,一般需要搭建主从架构来实现Redis的高可用。下面就聊一聊Redis主从架构的数据同步机制,先用master代替主节点,slave代替从节点。

全量同步

在我们新增加一个slave时,第一次连接到master时。slave会向master发送一个psync的指令,master接受到该指令后,会立即执行bgsave,生成一个快照数据rdb,然后将该快照换输给slave,在slave加载后即完成了slave数据的初始化。
同步的流程如下:

增量同步

假设slave在运行一段时间后,发生宕机或者网络故障,导致一段时间内未进行数据同步,在回复正常后就会使用增量同步。在slave启动后,会向master发送一个psync指令。与全量同步的差别在于,会多带一个offset。master接收到该指令后,会判断当前的数据偏移量是否在repl_backlog_buffer中,如果是则会将该ofset之后的数据同步给slave,否则会使用全量同步。

offset: 数据偏移量,slave用来记录当前同步到了哪条数据
repl_backlog_buffer: reids的数据缓冲区,用来保存redis最新的N条写操作指令。默认大小是1兆,可以通过repl-backlog-size来调整

同步的流程如下:

思考

假设在同步的过程中,又发生了新的写操作,redis是如何进行同步的?
答案是利用数据缓冲区,也就是repl_backlog_buffer,增量同步给slave。

原文地址:https://www.cnblogs.com/wugang/p/14490453.html