Redis 复制

一、复制

在这里插入图片描述

1.1 旧版复制功能的实现(Redis 2.8 以前)

Redis 复制_第1张图片
Redis 复制_第2张图片

命令传播:

主服务器会将自己执行的写命令,也即是造成主从服务器不一致的那条写命令,发送给从服务器执行,让两者再次回到一致状态。

1.2 旧版复制功能的缺陷

Redis 复制_第3张图片
即旧版断线后的复制还是使用SYNC命令,相当于重新进行复制,而没有利用从服务器中已有的数据。

1.3 新版复制功能的实现

Redis 复制_第4张图片
PSYNC 命令解决了旧版复制功能中断线重连的低效情况,当主服务器同意进行部分重同步后会给从服务器发送continue消息。

Redis 复制_第5张图片
Redis 复制_第6张图片

1.4 部分重同步的实现

Redis 复制_第7张图片

1.4.1 复制偏移量

Redis 复制_第8张图片
Redis 复制_第9张图片

1.4.2 复制积压缓冲区

复制积压缓冲区是由主服务器维护的一个固定长度先进先出(FIFO)队列,默认大小为1MB(可改)。

当主服务器进行命令传播时,它不仅会将写命令发送给所有从服务器,还会将写命令入队到复制积压缓冲区
Redis 复制_第10张图片
Redis 复制_第11张图片
Redis 复制_第12张图片
Redis 复制_第13张图片

1.4.3 服务器运行ID

除了复制偏移量复制积压缓冲区之外,实现部分重同步还需要用到服务器运行ID

Redis 复制_第14张图片

1.5 复制的步骤

Redis 复制_第15张图片
在这里插入图片描述
Redis 复制_第16张图片
Redis 复制_第17张图片
Redis 复制_第18张图片
Redis 复制_第19张图片
Redis 复制_第20张图片
Redis 复制_第21张图片
Redis 复制_第22张图片

1.6 心跳检测

Redis 复制_第23张图片
检测主从服务器的网络连接状态:
在这里插入图片描述
辅助实现min-slaves配置选项:
Redis 复制_第24张图片
检查命令丢失:
Redis 复制_第25张图片
Redis 复制_第26张图片

1.7 重点回顾

Redis 复制_第27张图片

你可能感兴趣的:(Redis)