当前位置: 首页 > news >正文

redis主从复制原理

在 Redis 中,我们可以通过 SLAVEOF 命令或者 slaveof 选项,让一个服务器去复制另一个服务器,被复制的服务器称为“主服务器”,发起复制的服务器称为“从服务器”,由两种服务器组成的模式称为“主从复制”。

主从复制原理:

  1. 客户端向从服务器发送 SLAVEOF 命令,先是判断是否是第一次复制,第一次是复制一般是刚开始组建主从关系。
  2. 是第一次复制:从服务器会向主服务器发送 PSYNC ? -1 命令,请求主服务器执行完整重同步操作。
  3. 主服务器接到完整重同步请求之后,将在后台执行 BGSAVE 命令,在后台生成一个 RDB 文件,并使用一个复制积压缓冲区记录从现在开始执行的所有写命令。
  4. BGSAVE 命令执行完毕之后,主服务器会将 RDB 文件以及 缓冲区中记录的写命令发送给从服务器,还会向从服务器返回 +FULLRESYNC [主服务器ID] [复制偏移量](和图中的 偏移量 是一个)。
  5. 从服务器接收到后,会载入 RDB 文件,并执行 主服务器给的 写命令,以此来达到和主服务器一致的数据状态。
  6. 如果不是第一次复制,那么说明从服务器可能是断线,导致和主服务器数据状态不一致,需要同步主服务器的数据。那么从服务器会按照下面的步骤来请求部分同步。
  7. 向主服务器发送 PSYNC [主服务器ID] [复制偏移量](这个是第一次复制时主服务器传过来的),主服务器ID 时断线前的主服务器,用于定位去同步那个主服务器的;复制偏移量是上一次同步的位置,用于定位具体的同步位置的。
  8. 主服务器接收到从服务器的命令后,并找到相应同步的位置后,会给从服务器发送 +CONTINUE 命令,表示将于从服务器执行部分同步操作,之后主服务器会将保存在复制积压缓冲区对应 复制偏移量之后的所有数据发送给从服务器,但是如果找不到偏移量之后的数据,就会进行完整同步,这样就可以让从服务器达到和主服务器一致的状态。

如图所示:

 

 

总结:
Redis 主从复制主要是通过 PSYNC 命令实现。
复制分为 部分复制 以及 完整复制
部分复制通过 复制偏移量、复制积压缓冲区、服务器ID来实现。
完整复制通过 RDB 以及 复制积压缓冲区来实现。
主从复制主要解决的是 数据备份、读写分离的问题。

http://www.lryc.cn/news/25459.html

相关文章:

  • buu刷题(第一周)
  • 算法训练营 day62 单调栈 每日温度 下一个更大元素 I
  • ChIP-seq 分析:Peak 注释与可视化(9)
  • ABB机器人配置DeviceNet总线IO板以及信号分配的具体方法示例
  • 2023 年网络安全漏洞的主要原因
  • 剑指 Offer 34. 二叉树中和为某一值的路径
  • 2023前端vue面试题(边面边更)
  • webpack配置完全指南
  • juju创建lxd容器时如何使用本地镜像(by quqi99)
  • 后端程序员学习前端开发之第一步环境搭建
  • 【记录问题】RuntimeError:working outside of application context. Flask使用SQLAlchemy数据库
  • 自动化测试难点案例分析,其实自动化你用错方向还不如不用
  • 866363-70-4,N3-C5-NHS ester,叠氮-C5-NHS 主要物理性质分享
  • 字符流定义及如何深入理解字符流的编码
  • 什么是pod类型
  • 2023年中小企业实施智能制造的建议
  • 【LeetCode】剑指 Offer 19. 正则表达式匹配 p124 -- Java Version
  • linux和windows中安装emqx消息服务器
  • 【XXL-JOB】XXL-JOB的搭建和使用
  • HCIP-5OSPF基本原理及基本配置学习笔记
  • Migrate your data into databend with DataX
  • ssh: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password)
  • 有限元中三角形的一些积分公式
  • 【docker-compose】安装mongodb
  • 【ClickHouse源码】物化视图的写入过程
  • .NET 使用NLog增强日志输出
  • 一道阿里类的初始化顺序笔试题
  • cuda找不到路径报错
  • Elasticsearch进阶之(核心概念、系统架构、路由计算、倒排索引、分词、Kibana)
  • Android包体积缩减