Redis主从架构、数据同步原理、全量同步、增量同步

Redis 和数据库的数据同步 每一种同步方式都有它的优缺点,但只要合理搭配,Redis 和数据库之间的数据同步就能像故事中的冒险一样,充满智慧与奇迹。如果没有,Cache Aside 就不得不跑到数据城,从数据库居民那里获取最新的信息,并将这些信息存放在自己的缓存仓库里,以备下次使用。每当访客需要更新信息时,Write Through 先将信息送到 Redis 的缓存仓库,然后再马不停蹄地奔向数据城,将同样的信息传递给数据库居民。这使得即使在高并发的情况下,信息也能有条不紊地同步到数据城,确保王国的信息管理一如既往的高效。 阅读详情

在这里插入图片描述

大家好,我是哪吒。

专栏导读

2023年再不会Redis,就要被淘汰了

图解Redis,谈谈Redis的持久化,RDB快照与AOF日志

Redis单线程还是多线程?IO多路复用原理

Redis集群的最大槽数为什么是16384个?

Redis缓存穿透、击穿、雪崩到底是个啥?7张图告诉你

Redis分布式锁的实现方式

Redis分布式缓存、秒杀

一、Redis主从架构

单节点Redis的并发能力是有上限的,要进一步提高Redis的并发能力,就需要搭建主从集群,实现读写分离。
在这里插入图片描述

二、数据同步原理

master如何判断slave是不是第一次来同步数据?这里会用到两个很重要的概念:

1、Replication Id:简称replid,是数据集的标记,id一致则说明是同一数据集。每一个master都有唯一的replid,slave则会继承master节点的replid
2、offset:偏移量,随着记录在repl_baklog中的数据增多而逐渐增大。slave完成同步时也会记录当前同步的offset。如果slave的offset小于master的offset,说明slave数据落后于master,需要更新。

因此slave做数据同步,必须向master声明自己的replication id 和offset,master才可以判断到底需要同步哪些数据。

三、全量同步的流程

  1. slave节点请求增量同步;
  2. master节点判断replid,发现不一致,拒绝增量同步;
  3. master将完整内存数据生成RDB,发送RDB到slave;
  4. slave清空本地数据,加载master的RDB;
  5. master将RDB期间的命令记录在repl_baklog,并持续将log中的命令发送给slave;
  6. slave执行接收到的命令,保持与master之间的同步;

三、可以从以下几个方面来优化Redis主从就集群

  1. 在master中配置repl-diskless-sync yes启用无磁盘复制,避免全量同步时的磁盘IO;
  2. Redis单节点上的内存占用不要太大,减少RDB导致的过多磁盘IO;
  3. 适当提高repl_baklog的大小,发现slave宕机时尽快实现故障恢复,尽可能避免全量同步;
  4. 限制一个master上的slave节点数量,如果实在是太多slave,则可以采用主-从-从链式结构,减少master压力

四、全量同步和增量同步区别?

全量同步:master将完整内存数据生成RDB,发送RDB到slave。后续命令则记录在repl_baklog,逐个发送给slave;
增量同步:slave提交自己的offset到master,master获取repl_baklog中从offset之后的命令给slave;

五、什么时候执行全量同步?

slave节点第一次连接master节点时;
slave节点断开时间太久,repl_baklog中的offset已经被覆盖时;

六、什么时候执行增量同步?

slave节点断开又恢复,并且在repl_baklog中能找到offset时。

七、超卖问题

线程交替执行,线程1【查询库存 -> 1】,
在进行库存扣减前,
线程2执行【查询库存 -> 1】,
线程2执行【扣减库存】,产生超卖问题!!!

在这里插入图片描述

在这里插入图片描述

🏆本文收录于,Java基础教程系列。

目前已经700+订阅,优快云最强Java专栏,包含全部Java基础知识点、Java8新特性、Java集合、Java多线程、Java代码实例,理论结合实战,实现Java的轻松学习。

🏆哪吒多年工作总结:Java学习路线总结,搬砖工逆袭Java架构师。

redis数据同步时的过程 关于分布式,限流+缓存+缓存,这三大技术(包含:ZooKeeper+Nginx+MongoDB+memcached+Redis+ActiveMQ+Kafka+RabbitMQ)等等。这些相关的面试也好,还有手写以及学习的笔记PDF,都是啃透分布式技术必不可少的宝藏。以上的每一个专题每一个小分类都有相关的介绍,并且小编也已经将其整理成PDF啦《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!学习的笔记PDF,都是啃透分布式技术必不可少的宝藏。 阅读详情

相关推荐

redis第六讲 数据同步

主从库:将一份数据同时保存在多个实例上。即使有一个实例出现了故 障,需要过一段时间才能恢复,其他实例也可以对外提供服务。 读写分离: 读操作:主库、从库都可以接收; 写操作:首先到主库执行,然后,主库将写操作同步给从库 y? 如上图上面那个,会让数据在三个实例上的副本不一致。如果我们非要保持这个数据在三个实例上一致,就要涉及到加锁、实例间协商是否完成修改等一系列操作,但这会带来巨额的开销。 replicaof 172.16.19.3 6379 变成172.16.19.3的从库。 第一次同步:主从级联模式分担

weixin_42403455的博客 1059

一篇让你了解Redis同步--详解全部

故障修复:主节点宕机的时候,其他节点依然可以提供服务;负载均衡:主节点提供写服务,从节点提供读服务,分担压力;高可用的实现:是哨兵和cluster实施的基础主从怎么保持一致性?Redis提供了主从库的形式,来保持数据副本的一致性,主从库之间采用读写分离的方式采用的是读写分离的方式读操作:主、从库都可以执行;写操作:主库先执行完,在同步到字库中。读写分离的目的?为了避免写操作的时候主从服务器都在执行,每次修改都发送到主从实例上,就会造成实例副本数据不一致的现象。

Recently祝祝的博客 4512

Redis——Redis主从架构原理

摘要 本文中将就Redis的相关的的问题和与源码的分析 Redis的基础的数据的结构原理

庄小焱 2198

数据同步之全量同步与增量同步

一、什么是数据同步 业务数据是数据仓库的重要数据来源,我们需要每日定时从业务数据库中抽取数据,传输到数据仓库中,之后再对数据进行分析统计。 为保证统计结果的正确性,需要保证数据仓库中的数据与业务数据库是同步的,离线数仓的计算周期通常为天,所以数据同步周期也通常为天,即每天同步一次即可。 数据的同步策略有全量同步和增量同步。 二、全量同步 全量同步,就是每天都将业务数据库中的全部数据同步一份到数据仓库,这是保证两侧数据同步的最简单的方式...

lslslslslss的博客 2万+

告别手动抓信号!Synopsys AXI VIP的Port Monitor实战:5分钟搞定与Scoreboard的TLM连接

本文详细介绍了Synopsys AXI VIP的Port Monitor功能,帮助验证工程师快速实现与Scoreboard的TLM连接,5分钟内完成自动数据收集。通过实战指南和常见问题排查,提升验证效率,告别手动抓信号的繁琐流程。

weixin_30565327的博客 300

Source Insight 4.0 及最新版序列号验证机制全解析:如何快速定位关键函数并构造有效Key

本文深入解析了Source Insight 4.0及最新版的序列号验证机制,详细介绍了如何快速定位关键函数并构造有效Key。通过静态分析和动态调试技术,帮助开发者理解现代软件保护的设计哲学,掌握逆向分析方法论,提升安全研究能力。

weixin_26642481的博客 426

Redis中的主从/Redis八股

replication buffer是直接传输给slave的缓存,是只有多个的,详情可以在增量同步中理解(这里和黑马的不一样,比黑马的详细)通过内存产生快照,并在子进程生成RDB的时候,主进程把新的指令写入repl_baklog中,后续发送给slave,方便同步最新数据。限制一个master上的slave节点数量,如果实在是太多slave,则可以采用主-从-从链式结构,减少master压力。,它用于实时传输写命令,且大小是动态的,因为对于同步速度较慢的从服务器,需要更多的内存来缓存数据。

2403_86942375的博客 1339

ai数字人系统部署

这段代码实现了基本的语音交互闭环,用户通过语音输入问题,数字人识别语音后进行自然语言理解并生成回复,再将回复转换为语音输出。但实际应用中的 AI 数字人系统更为复杂,如形象渲染需专业图形引擎(如 Unity、Unreal Engine),自然语言处理也会涉及更复杂的模型微调及多轮对话管理等。一个完整的 AI 数字人系统涵盖形象生成、自然语言处理、动作控制等多个复杂功能,下面为你提供一个 Python 示例,整合多个库来实现数字人基础功能,包括语音交互、简单的自然语言理解以及通过虚拟形象展示对话。

weixin_ggwwsscc的博客 369

Redis分布式缓存(二)| 主从架构搭建、全量/增量同步原理、主从同步优化

Redis主从架构 1.搭建主从架构 1.1.集群结构 1.2.准备实例和配置 1.3.启动 1.4.停止 1.5.开启主从关系 1.6.测试 2.主从数据同步原理 2.1.全量同步 2.2.增量同步 2.3.repl_backlog原理 3.主从同步优化

慌途L 1944

Flink上传的Jar包去了哪里?大数据

在使用Flink时,我们通常会将应用程序打包成Jar文件并将其上传到Flink集群以执行。总结起来,Flink上传的Jar包实际上会暂时存储在JobManager的本地文件系统中的一个临时目录中。在上传过程中,Flink会将Jar文件存储在JobManager的本地文件系统中的一个临时目录中。一般来说,Flink会在。希望本文对你解答了Flink上传的Jar包去了哪里的疑问,并且能够帮助你更好地理解Flink的工作原理。接下来,我们可以使用Flink命令行工具将Jar文件提交到Flink集群。

AlianBlank的博客 865

第44节:cesium 大雾效果(cesium自带)(含源码+视频)

cesium 大雾效果(cesium自带)

qq_29384639的博客 1702

【Redis快速入门】Redis快速搭建主从架构

2.Redis主从 2.1.搭建主从架构 单节点Redis的并发能力是有上限的,要进一步提高Redis的并发能力,就需要搭建主从集群,实现读写分离。 具体搭建流程参考: 【Redis快速入门】Redis三种集群搭建配置(主从集群、哨兵集群、分片集群) 2.2.主从数据同步原理 2.2.1.全量同步 主从第一次建立连接时,会执行全量同步,将master节点的所有数据都拷贝给slave节点,流程:

鱼干的博客 3137

司法AI系统的架构设计:法律知识图谱如何辅助智能庭审?架构师亲测

简单来说,法律知识图谱是一种采用图数据结构(节点Node + 边Edge/关系Relation)来组织和表达法律领域知识的语义网络。它以。

AI 算法实战派 1088

(二)分布式缓存——Redis主从架构

分布式缓存——Redis主从架构一、搭建主从架构:1、背景:2、主从节点搭建:2.1 开启多个Redis服务2.2 建立这些Redis之间的主从关系:2.3 查看结果:二、主从数据同步原理:1、 主从同步的第一步——全量同步:2、全量同步的流程:3、slave重启后的同步——增量同步:4、优化Redis主从架构:5、总结: 分布式缓存——Redis主从架构 一、搭建主从架构: 1、背景: 单节点Redis的并发能力是有上限的,要进一步提高Redis的并发能力,就需要搭建主从集群,实现读写分离。 因为Re.

方方土的博客 5020

PyTorch深度学习实战(3)——使用PyTorch构建神经网络

PyTorch 是一个用于构建深度神经网络的库,具有灵活性和可扩展性,可以轻松自定义模型。在本节中,我们将使用 PyTorch 库构建神经网络,利用张量对象操作和梯度值计算更新网络权重,并利用 Sequential 类简化网络构建过程,最后还介绍了如何使用 save、load 方法保存和加载模型,以节省模型训练时间。

盼小辉丶的博客 8万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【Redis】Redis 主从架构与数据同步机制详解

如果 slave 的 offset 小于 master 的 offset,说明 slave 数据落后于 master,需要更新。因为 slave 原本也是一个 master,有自己的 replid 和 offset,当第一次变成 slave,与 master 建立连接时,发送的 replid 和 offset 是自己的 replid 和 offset。master 判断发现 slave 发送来的 replid 与自己的不一致,说明这是一个全新的 slave,就知道要做全量同步了。

记录学习过程。 1005

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Redis笔记 Redis主从同步

因为slave原本也是一个master,有自己的replid和offset,当第一次变成slave,与master建立连接时,发送的replid和offset是自己的replid和offset。不过,旧的数据只要是绿色的,说明是已经被同步到slave的数据,即便被覆盖了也没什么影响。master判断发现slave发送来的replid与自己的不一致,说明这是一个全新的slave,就知道要做全量同步了。slave与master的offset之间的差异,就是salve需要增量拷贝的数据了。

个人博客,记录了本人学习的各种有趣的技术。 353

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Redis主从架构

Redis主从架构-搭建主从架构-主从数据同步原理

weixin_44205136的博客 278

Redis高可用之主从架构实战

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录系列文章目录前言一、主从复制介绍1、作用2、架构3、复制操作两种方式二、主从架构的数据同步方式1.全量同步2.增量同步二、主从架构的优缺点总结 前言 前面一些文章讲述了Redis的数据结构以及使用场景,持久化方式以及优缺点,本文主要讲解Redis的主从架构,Redis中文文档,主从的安装请

xiaolinzi176的博客 2263

Redis架构之主从复制

主从集群,实现。

BabyOi的博客 1060

Redis从入门到精通(十三)Redis分布式缓存(一)RDB和AOF持久化、Redis主从集群的搭建与原理分析

Redis分布式缓存(一)Redis的RDB、AOF持久化原理,Redis主从集群的搭建和原理分析。

挑灯日记 记录自己 1460

Redis主从架构、主从复制

1. Redis主从复制原理 1.1 主从架构 redis主从架构 -> 读写分离架构 -> 可支持水平扩展的读高并发架构 架构做成主从架构,一主多从,主负责写,从负责读。数据同步时,将master的数据同步复制到其他slave节点。 水平扩容,就是说,当QPS在增加,只要增加redis slave节点即可 1.2 主从架构的核心原理 当启动一个slave node的时候,它会发送一...

illusory_germ的博客 865

黑马程序猿 - Redis - 高级篇 - 2.Redis主从

Redis主从架构通过搭建主从集群实现读写分离,从而提高并发能力。主从数据同步分为全量同步和增量同步。全量同步发生在主从首次连接时,master将完整数据拷贝给slave,并通过replid和offset判断是否需要全量同步。增量同步则是在后续同步中,仅更新slave与master存在差异的部分数据。repl_baklog作为环形数组记录命令日志及offset,用于判断数据差异。优化主从同步可以从无磁盘复制、减少内存占用、提高repl_baklog大小等方面入手。全量同步适用于首次连接或slave断开过久的

tang7mj的博客 1082

分布式缓存 --redis -- 高并发(主从框架读写分离)

Redis主从 搭建主从架构 单节点Redis的并发能力是有上限的,要进一步提高Redis的并发能力,就需要搭建主从集群,实现读写分离。 主从数据同步原理 全量同步 主从第一次建立连接时,会执行全量同步,将master节点的所有数据都拷贝给slave节点,流程: 这里有一个问题,master如何得知salve是第一次来连接呢?? 有几个概念,可以作为判断依据: Replication Id:简称replid,是数据集的标记,id一致则说明是同一数据集。每一个master都有唯一的replid,slav

Peng_zhj的博客 614

Redis主从架构记录一下

前言 redis在项目中是经常会使用的一种缓存数据库,了解其一些配置和设计思路有利于我们更有效安全的使用它 这次分析一下Redis的主从架构机制,所谓知其然知其所以然。 搭建过程 想要了解Redis的主从架构机制,最好的办法是自己搭建一套Redis主从架构。 下面我们搭建一个redis一主二从的主从架构。 首先下载一个单机redis服务器,然后复制两份 redis-6380.conf和redis-6381.conf文件,分别更改以下相关配置从节点: port 6380

qq_41665452的博客 150
上一篇: 如何准备一场面试
下一篇: 华为OD机试 - 素数之积 - 数学问题(Java 2025 A卷 100分)
哪 吒
哪 吒 2022年度博客之星TOP 1 2022年度博客之星TOP 1 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄9年 59万+粉丝 2953原创
评论 9
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哪 吒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值