开发者学堂课程【Redis 入门到精通(进阶篇):主从复制-复制缓冲区与偏移量】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/765/detail/13455
主从复制-复制缓冲区与偏移量
目录
一,复制缓冲区说明
二,复制缓冲区内部工作原理
三,复制缓冲区总结
四,主从服务器复制偏移量 (offset)
本章主要讲解复制缓冲区设计的内容及流程
一,复制缓冲区说明
1.概念:
复制缓冲区,又名复制积压缓冲区,是一个先进先出 (FIFO)的队列,用于存储服务器执行过的命冷,每次传播命令,master 都会将传播的命令记录下来,并存储在复制缓冲区。
2.操作流程解析:
(1).主机和多个 slave 进行连接以后,主要要会发送命令。注意,master里面,通过一个叫做命令传播程序的东西来做这件事情,命令来到以后给到 master,然后由这个程序负责向外分发,发给每一个 slave。在这里边有一个问题要注意,如果说某一条线的连接中,它断网了,那么它的对应指令会接收不到。为了解决这个问题,于是建立了一个复制缓冲区的概念。
(2).当命令来收到以后,除了发过来,还放在这里一份。一旦有了这一块儿区域,就不会丢数据。注意,复制缓冲区是一个队列,且是一个先进先出的队列,先进先出意味着,它能进也能出去,出去的方法是被挤出去的。当这里边容量到达上限的时候,前面的指令就会被挤掉。
以下图为流程的图片形式的解释图,可供参考:
二,复制缓冲区内部工作原理
1.组成
(1).偏移量
(2).字节值
2.工作原理
通过 offset 区分不同的 slave 当前数据传播的差异
以下图为说明内部工作原理的解释图:
三,复制缓冲区总结
1.概念:
复制缓冲区,又名复制积压缓冲区,是一个先进先出 (FIFO)的队列,用于存储服务器执行过的命令,每次传播命令,master 都会将传播的命令记录下来,并存储在复制缓冲区,复制缓冲区默认数据存储空间大小是 1M,由于存储空间大小是固定的,当入队元素的数量大于队列长度时,最先入队的元素会被弹出,而新元素会被放入队列。
2. 由来:
每台服务器启动时,如果开启有 AOF 或被连接成为 master节点,即创建复制缓冲区。
3. 作用:
用于保存master收到的所有指令(仅影响数据变更的指令,例 set,select)。
4. 数据来源:
当 master 接收到主客户端的指令时,除了将指令执行,会将该指令存储到缓冲区中。
四,主从服务器复制偏移量 (offset)
1.概念:
一个数字,描述复制缓冲区中的指令字节位置。
2.分类:
(1).master 复制偏移量:记录发送给所有 slave 的指令字节对应的位置(多个)。
(2).slave 复制偏移量:记录 slave 接收 master 发送过来的指令字节对应的位置(一个)。
3.数据来源:
(1).master 端:发送一次记录一次
(2).slave 端:接收一次记录一次
4.作用:
同步信息,比对 master 与 slave 的差异,当 slave 断线后,恢复数据使用。

