[Redis]——主从同步原理(全量同步、增量同步)

目录

Redis集群:

主从同步原理:

replid和offset:

全量同步和增量同步:

repl_baklog文件:

主从集群的优化:


Redis集群:

      部署多台Redis我们称之为Redis集群,他有一个主节点(负责写操作),多个从节点(负责读操作),它有高可用性、可扩展性、性能提升、自动分片以及无中心架构等优势。

如果想让A成为B的从节点,使用命令

我们在从节点使用slaveof masterIp masterport 或者 replicaof masterIp masterport

主从同步原理:

  • 第一阶段:判断replid是否相同,如果不同,那么代表是第一次建立连接,这是做的操作是修改从节点的replid。
  • 第二阶段:主节点执行bgsave命令,然后将RDB文件发送给从节点,在记录RDB和发送文件的同时,主节点所作的写操作会记录到一个日志文件中repl_baklog。
  • 第三阶段:发送repl_baklog命令,从节点同步并执行里面的命令。

replid和offset:

replid:用于判断两者是否是第一次连接

offset:是偏移量,主节点每做一次写操作,偏移量会+1,然后从节点每做一次增量同步操作,就是执行repl_baklog命令,offset也会跟着改变,所以当主机点和从节点的offset不同时,就会做主从同步。

全量同步和增量同步:

全量同步(也就是第一次同步)流程:

        slave建立连接判断replid是否相同 -> 不同拒绝增量同步,并修改replid/相同进行增量同步 ->master节点做bgsave生成RDB文件发送给从节点 -> 从节点做全量同步 -> master做bgsave期间的命令记录在repl_baklog中,并持续将该文件中的命令发送给从节点 -> 从节点执行log中命令(offset起作用了)保证主从一致。

 增量同步:

        增量同步是从节点更新repl_baklog文件中offset偏移量之后的那些操作。

repl_baklog文件:

        repl_baklog文件可以理解为一个闭环的数组,当master做写操作时,主节点的offset会增加,当文件写满了时,会从头开始,覆盖旧数据,所以当从节点宕机了,主节点一直在写数据,导致转了一圈到了从节点的offset的地方了,那么就会触发全量同步

主从集群的优化:

  • 从RDB角度->

在master中配置repl-diskless-sync yes启用无磁盘复制,直接通过网络传输到从节点。

Redis单节点内存占用不要太大,减少RDB导致的过多磁盘IO。

  • 从增量同步角度

适当增大repl_baklog文件的大小,发现slave宕机尽快实现故障恢复

限制一个master上的slave节点数量,如果slave数量太多,建议采用主-从-从链式结构。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/540500.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【OJ比赛日历】快周末了,不来一场比赛吗? #03.16-03.22 #17场

CompHub[1] 实时聚合多平台的数据类(Kaggle、天池…)和OJ类(Leetcode、牛客…)比赛。本账号会推送最新的比赛消息,欢迎关注! 以下信息仅供参考,以比赛官网为准 目录 2024-03-16(周六) #5场比赛2024-03-17…

软件测试 —— 测试用例设计报告

写出测试网站的测试用例,测试网站具体内容可看团购网站系统需求说明书1.2.doc 一、流程1:注册→登录 图1:注册->登录流程图 1、 使用场景设计法设计测试用例 1) 找出基本流和备选流 基本流注册用户-成功登录系统备选流1注册…

SAP-MM-型材采购流程细节

1.物料的转换关系—2024年3月14日 2.采购信息记录维护,维护KG的价格和转换关系 维护转换因子 3.创建采购订单(PS:这里有个优先级,优先采购信息记录的转换比例,其次是物料主数据的) 4.采购订单收货 常见问题&#x…

【CesiumJS-5】绘制动态路线实现飞行航线、汽车轨迹、路径漫游等

实现效果 前言 Cesium中,动态路线绘制的核心是借助CZML格式,CZML是一种用来描述动态场景的JSON数组,可以用来描述点、线、多边形、体、模型及其他图元,同时定义它们是怎样随时间变化的; CZML主要做三件事: 1.添加模型信息 2.添加…

矿洞隧道漫游可视化:探索地心深处的奇幻世界

在这个充满好奇与探索的时代,我们总是渴望揭开世界的神秘面纱,探寻那些深藏在地球内部的奥秘。 矿洞隧道漫游可视化系统通过先进的计算机图形学、虚拟现实和三维建模技术,将矿洞隧道的真实场景进行高精度还原,让我们仿佛置身于一个…

【问题】如何启用火狐浏览器网页翻译功能?

如何启用火狐浏览器的翻译网页功能呢? 🍀1 点击浏览器右上角的三道杠,然后点击“扩展和主题”,进入如下页面。 🍀2 在输入框中输入“翻译”,然后开始搜索。 🍀3 从搜索结果中选择一个需要的并点击,例如选择腾讯翻译

【嵌入式开发·Arduino板】I2C接口通讯及应用 | 串口通讯实例 | I2C的类库函数,I2C接口的应用

“跟猫学,保持冷漠,适当撒娇,几乎不动心。跟猪学,保持食欲,充足睡眠,几乎不烦恼。” 🎯作者主页: 追光者♂🔥 🌸个人简介: 💖[1] 计算机专业硕士研究生💖 🌿[2] 2023年城市之星领跑者TOP1(哈尔滨)🌿 🌟[3] 2022年度博客之星人工智能领域…

掌握高级设计原则:Java中的过滤器模式解析与实战演练,构建灵活且可扩展的系统架构

过滤器模式是一种结构型设计模式,它允许开发者使用不同的标准来过滤一组对象,并通过逻辑运算以解耦的方式将它们联系起来。 过滤器模式的核心在于提供了一个处理对象的机制,这个机制可以根据一个或多个标准来决定哪些对象应该被接受、哪些应…

phpstudy自定义安装mysql8.3并启动

phpstudy自定义安装mysql8.3并启动 先去官网:https://dev.mysql.com/downloads/下载压缩包文件 然后按下面的图片一步一步操作 选择版本,选择第一个压缩包文件,下载 下载完成后,解压到phpstudy环境目录下,如下图 然后进入mysq…

python 目录和文件基本操作

目录操作 获取当前目录: import os dir_path os.getcwd() print("当前目录:", dir_path) 当前目录: D:\work\pycharm\object 创建目录: import osdir_path os.getcwd() print("当前目录:", d…

【MySQL基础】MySQL基础操作

文章目录 🍉什么是数据库?🍓MySQL数据库🧀1.数据库操作🍆1.1展示数据库🍆1.2创建数据库🍆1.3使用数据库🍆1.4删除数据库 🧀2.常用数据类型🧀3.数据表操作&…

电子元件封装类型

电子元件封装类型 ![](