【redis】数据同步:主从库如何实现数据一致

news/2024/5/1 20:07:09/文章来源:https://blog.csdn.net/weixin_57597001/article/details/129929421

如果redis实例宕机了,在恢复期间,无法服务新来的数据存取请求。

redis高可靠性:

  1. 数据尽量少丢失(AOF、RDB)
  2. 服务尽量少中断(增加副本冗余量)-将一份数据同时保存在多个实例上

redis提供了主从模式,采用读写分离-保证数据副本的一致

读操作-主库,从库都可以接收

写操作:主库先执行,然后主库将写操作同步给从库。

主从库如何进行第一次同步

如图:

第一阶段:psync 命令包含了主库的 runID 和复制进度 offset 两个参数。

runID,是每个 Redis 实例启动时都会自动生成的一个随机 ID,用来唯一标记这个实

例。当从库和主库第一次复制时,因为不知道主库的 runID,所以将 runID 设

为“?”。

offset,此时设为 -1,表示第一次复制。

FULLRESYNC 响应表示第一次复制采用的全量复制,也就是说,主库会把当前所有的数据都复制给从库。

第二阶段:主库将所有数据同步给从库。从库收到数据后,在本地完成数据加载。这个过程依赖于内存快照生成的 RDB 文件。

第三阶段:主库会把第二阶段执行过程中新收到的写命令,再发送给从库。

主从级联模式分担全量复制时的主库压力

为了防止给主库带来更多压力,提出一种“主 - 从 - 从”模式。

通过“主 - 从 - 从”模式将主库生成 RDB 和传输 RDB 的压力,以级联的方式分散到从库上。以减轻主库的压力

这个方案很好,但是当主从库之间网络断了将如何进行数据同步?

在redis 2.8之间,会进行主从之间的全量复制,这个开销非常大。

redis2.8开始:进行增量复制 使用repl_backlog_buffer (记录增量),repl_backlog_buffer 是一个环形缓冲区,主库会记录自己写到的位置,从库则会记录自己已经读到的位置。

增量复制的流程:

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

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

相关文章

系统分析师高频错题集

软件架构设计---软件架构评估 信息系统评价要素包括:功能、成本、可靠性、可用性、存储容量、效率、响应时间等。不同的应用,首选评价指标是不同的,如银行系统,应该重点考虑系统的可用性和可靠性。 软甲架构设计---软件架构评估 …

android BatteryHistorian使用

android BatteryHistorian使用 Batterystats 工具和 Battery Historian 脚本的基本用法和工作流程Batterystats 是包含在 Android 框架中的一种工具,用于收集设备上的电池数据。您可以使用 adb 将收集的电池数据转储到开发计算机,并创建一份可使用 Batt…

了解Mysql

存储引擎 从上图我们可以查看出 MySQL 当前默认的存储引擎是InnoDB,并且在5.7版本所有的存储引擎中只有 InnoDB 是事务性存储引擎,也就是说只有 InnoDB 支持事务。 InnoDB和MyISAM的区别 MyISAM是MySQL的默认数据库引擎(5.5版之前)。虽然性…

2017百度世界大会 爱奇艺创始人CEO龚宇演讲速记

2017百度世界大会如期而来。(好像不对,Robin 说往年都是夏季办)那就改成千呼万唤始出来。 以下是爱奇艺创始人CEO龚宇演讲实录,小编全文呈上,请各位查收: 各位来宾,大家好! 很高兴今…

深力科本周知识小课堂【分立半导体】晶体管(上)基础知识,微电子人的狂欢

深力科本周知识小课堂【分立半导体】晶体管(上)基础知识,微电子人的狂欢 今天,东芝深力科电子将为大家说明一下双极晶体管和绝缘栅双极晶体管。 晶体管大致分为三种类型:双极型、场效应型和绝缘栅双极型。 双极晶体管…

Linux下的JavaEE开发(xftp传输安装、wget安装)

目录 一:jdk的安装(xftp传输安装) 二:Tomcat的安装(不需要配置环境变量) 三:Idea的安装(不需要配置环境变量) 四:Mysql的安装(wget网络安装&am…

千寻驰观亮相公路行业权威年会,开启2023全国路测第一站

千寻驰观亮相中国公路学会养护与管理养护与管理分会第十二届学术年会2023年3月28日至29日,在中国公路学会养护与管理养护与管理分会第十二届学术年会上,千寻位置面向行业全面展示了千寻驰观-道路智能巡检系统“车道级”目标位置估计、像素级的面积计算、…

linux系统编程(5)--进程间通信

1.进程间通讯概念 进程是一个独立的资源分配单元,不同进程之间的资源是独立的,没有关联,不能在一个进程中直接访问另一个进程的资源。 但是,进程不是孤立的,不同的进程需要进行信息的交互和状态的传递等,…

ASP.NET动态Web开发技术第3章

第3章C#编程基础一.预习笔记 1.C#语言概述 using指令表示引用命名空间 //:表示单行注释 /* */:表示多行注释 2.变量和常量 Camel和Pascal 3.数据类型 值类型:简单类型、结构类型、枚举类型,其中简单类型又包含了整数类型&a…

箱线图详细介绍及绘制箱线图和复现箱线图的步骤详解

目录 一、箱线图介绍二、python函数三、利用数据绘制箱线图四、拓展——未知数据复现箱线图一、箱线图介绍 箱线图(Box Plot),也称为盒须图、箱形图、盒式图,是一种用于显示数据分布情况的图表。箱线图通常由五条线组成,包括最小值、第一四分位数、中位数、第三四分位数和…

网络安全从业人员应该如何提升自身的web渗透能力?

前言 web 渗透这个东西学起来如果没有头绪和路线的话,是非常烧脑的。 理清 web 渗透学习思路,把自己的学习方案和需要学习的点全部整理,你会发现突然渗透思路就有点眉目了。 程序员之间流行一个词,叫 35 岁危机,&am…

Ae:文本图层 - 文本属性组

文本图层默认包含“文本”和“变换”两大属性组。“变换”属性组用于对文本图层的整体变换,是大多数图层通用的属性组。“文本”属性组则包含了与文本相关的特有属性,还可通过右侧的“动画” Animate按钮添加文本动画制作工具属性。请参阅:《…

前端已死?金三银四?你收到offer了吗?

目录 一、前言 二、“唱衰” 三、不局限于框架、前端 四、打动面试官 五、正向加成 六、小结 一、前言 最近在脉脉、知乎等平台都有人在渲染前端从业人员的危机,甚至使用“前端已死”的字眼,颇有“语不惊人死不休”的意味,对老鸟来说&a…

设计模式小记

1、设计模式介绍 1.1、设计模式目的 编写软件过程中,程序员面临着来自 耦合性,内聚性以及可维护性,可扩展性,重用性,灵活性 等多方面的挑战,设计模式是为了让程序(软件),具有更好的 代码重用性…

C#,初学琼林(02)——数组和值计算(Sum,求和)的源程序,相关问题及解决之道

1、求和算法 假设我们有一个 n 元素数组,我们想计算它们的总和。a 是一个索引从 0 到 n-1 的数组 。它的元素将被标记为:a[0], a[1],a[2],a[3],...,a[n-1]。 要计算此数组元素的总和,我们将执行…

一句话设计模式10:建造者模式

建造者模式: 一步一步建造一个对象; 文章目录建造者模式: 一步一步建造一个对象;前言一、建造者模式的作用二、如何实现建造者模式第一种: 改写set方法第二种: 直接使用lombok 的 Builder总结前言 建造者模式一般使用场景是: 一个复杂的对象创建过程,分步骤执行,一步一步完成创…

【开源项目】消息推送平台austin介绍

项目介绍 核心功能:统一的接口发送各种类型消息,对消息生命周期全链路追踪。 意义:只要公司内部有发送消息的需求,都应该要有类似austin的项目。消息推送平台对各类消息进行统一发送处理,这有利于对功能的收拢&#…

【LeetCode每日一题:2367. 算术三元组的数目:暴力模拟+Hash表】

🍎作者简介:硕风和炜,CSDN-Java领域新星创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎 🍎座右…

windows下切换PHP-cli版本

概念: PHP-cli是PHP Command Line Interface的缩写,指的是PHP的命令行界面。它是PHP语言中的一种执行方式,可以在命令行下运行PHP程序,而不需要通过Web服务器或浏览器来执行。 PHP-cli可以用于很多场景,比如&#xf…

Spark—idea

ideal—Spark新建工程新建maven工程,添加scala添加依赖pom添加依赖并下载 spark-core重复步骤下载spark-sqlspark-hivespark-graphxmysql-connector-java安装完成新建SparkDemo的scala objectsc对象可能会出现报错,参考这位老哥的解决办法wordcount打架包…