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

Redis进阶--主从复制

目录

一、引言

二、介绍

三、解决问题

四、配置主从复制

1.复制

全量复制:

部分复制:

实时复制:

五、总结


一、引言

  本篇文章将继续介绍Redis中的主从复制机制

二、介绍

  主从复制是在分布式系统中实现的,希望有多个服务器来部署redis

1.主从模式:

在若干个redis节点中,有的是主节点,有的是从节点。从节点的数据要跟随主节点进行变化。从节点相当于主节点的副本。从节点上的数据只能读取,不能进行修改。

2.主从+哨兵模式

3.集群模式

三、解决问题

主从模式解决的问题:

1.可用性问题

2.性能/支持的并发量也是比较有限的

四、配置主从复制

 offset:从节点和主节点之间同步数据的进度

info命令:replication:查看主从复制的内容

slaveof no one:断开所有的主从复制关系

断开之后,所拥有的数据还是会拥有,但是从节点无法再自动更新数据了

复制是使用了redis的psync命令,完成数据同步的过程。

psync不需要我们手动执行,redis服务器在建立好同步关系之后,自动执行psync。从节点负责执行psync,从节点从主节点那边拉取数据

psync可以从主节点获取全量数据,也可以获取部分数据,主要是看offset的进度,如果offset写作-1,就是获取全量数据,如果是正整数就是获取偏移量的数据

命令:psync replicationid offset

replicationid是主节点生成的,启动的时候就生成了(即使是同一个主节点,每次重启,生成的replicationid都是不同的)从节点和主节点建立了复制关系,就会从主节点这边拿到replicationid。

存在replicationid和replicationid2,replication2是由于A可能因为网络波动掉线了,B就会自己成为主节点(并生成一个replicationid),并且B也会记得A的replicationid(也就是replication2),当网络稳定了,A回归了,B也可以通过replication2重新成为A的从节点。

offset(偏移量):

主节点:会把修改命令,每个命令的字节数进行累加,得到的数字就是偏移量

从节点:现在从节点同步主节点的数据同步到哪个位置了

如果两个redis客户端:replication,offset都一样,就代表两个机器上的redis存储的数据是一样的。

1.复制

全量复制:

1.从节点主动向主节点发送psync命令,由于是第一次,就全量复制

2.根据命令解析处是全量复制,就返回fullresync命令

3.从节点接收到主节点的运行信息(replicationId等)进行保存

4.主节点执行bgsave进行RDB文件的持久化

5.主节点发送RDB文件给从节点,从节点保存RDB数据到本地硬盘

6.主节点在4,5步进行的时候,这一过程中产生的写操作写入缓冲区中,等从节点保存完RDB文件后,主节点再将缓冲区的数据也传输给从节点

7.从节点清空自身原有的旧数据

8.从节点加载RDB文件得到与主节点一致的数据

9.从节点判断自己是否开启了AOF,如果开启了就会进行AOF的bgrewriteaof,对冗余信息进行整理。

无硬盘模式的全量复制:

主节点生成的RDB二进制数据不是保存在文件中了,而是直接进行网络传输(省下了读硬盘和写硬盘的操作)

从节点直接把收到的数据进行加载了

runId/replid:

replid和runId是不同的东西

replid主要是在主从复制中起作用,标识了一个数据集合

runid与主从复制没啥关系

部分复制:

psync命令带有具体的replid和offset值,主节点就会去判断按照全量复制还是部分复制。

1.出现网络中断,主节点与从节点断开连接

2.断开期间,主节点收入的数据会放入挤压缓冲区中(基于内存的一个简单队列)

3.恢复连接之后,从节点与主节点建立连接

4.从节点将之前保存好的replid和offset偏移量发给主节点,主节点自我判断是全量复制还是部分复制。

5.根据offset去积压缓冲区查找合适的数据,并响应+continue给从节点

6.主节点根据需要的数据把数据发送给从节点,保证数据一致性。

实时复制:

  主节点和从节点已经同步好了数据,但是主节点的数据还在不断改变,也需要同步给从节点。从节点和主节点会建立一个TCP长连接,然后主节点会把修改数据的请求发给从节点。

五、总结

  主从复制主要解决了单点问题,可以预防某个redis服务器突然崩了,所以主从复制很好地解决了这个问题,下一篇文章我们将介绍哨兵模式,感谢观看!

相关文章:

Redis进阶--主从复制

目录 一、引言 二、介绍 三、解决问题 四、配置主从复制 1.复制 全量复制: 部分复制: 实时复制: 五、总结 一、引言 本篇文章将继续介绍Redis中的主从复制机制 二、介绍 主从复制是在分布式系统中实现的,希望有多个服务器…...

Redisson分布式锁:原理、使用

1. Redisson简介 Redisson是一个基于Redis的Java客户端库,提供了丰富的分布式对象和服务(如分布式锁、信号量、Map等)。其核心优势在于​​简化分布式锁的实现​​,并解决了原生Redis分布式锁的常见问题(如死锁、误删…...

Java设计模式之外观、享元、组合模式《三国争霸:模式风云录》

第一章:乱世起(外观初现) 黄巾余孽张角三兄弟操控"混沌子系统",各地流民不堪996劳役。观国隐士诸葛孔明出山,在博望坡构建首个"军师智脑": /​**​* 外观模式:军师智…...

设计模式之解释器模式:原理、实现与应用

引言 解释器模式(Interpreter Pattern)是一种行为型设计模式,它定义了一种语言的文法表示,并提供一个解释器来解释该语言中的句子。解释器模式适用于需要解析特定语法规则的场景,如正则表达式、SQL解析等。本文将深入…...

redis itheima

缓存问题 核心是如何避免大量请求到达数据库 缓存穿透 既不存在于 redis,也不存在于 mysql 的key,被重复请求 public Result queryById(Long id) {String key CACHE_SHOP_KEYid;// 1. redis & mysqlString shopJson stringRedisTemplate.opsFo…...

AF3 OpenFoldDataModule类setup方法解读

AlphaFold3 data_modules 模块的 OpenFoldDataLoader 类 setup 方法用于设置数据集的关键部分,负责根据不同的模式(训练、验证或预测)生成和初始化相应的数据集。 源代码: def setup(self, stage=None):# Most of the arguments are the same for the three datasets data…...

服务器报错:xxx/libc.so.6: version `GLIBC_2.32‘ not found

/lib/x86_64-linux-gnu/libc.so.6: version GLIBC_2.32 not found (required by ./aima-sim-app-main) 解决思路 根据错误信息,您的应用程序 aima-sim-app-main 和 libmujoco.so.3.1.6 库依赖于较新的 GNU C Library (glibc) 版本(如 GLIBC_2.32, GLIBC…...

FPGA状态机设计:流水灯实现、Modelsim仿真、HDLBits练习

一、状态机思想 1.概念 状态机(Finite State Machine, FSM)是计算机科学和工程领域中的一种抽象模型,用于描述系统在不同状态之间的转换逻辑。其核心思想是将复杂的行为拆解为有限的状态,并通过事件触发状态间的转移。 2.状态机…...

机试题——最少乘坐公交次数

题目描述 春节将近,小明想在节日期间逛一逛城里的 ( N ) 个著名景点。所有景点都能通过坐公交到达。需要设计一种公交路线方案,让小明能最快地逛完所有景点。 输入描述 第一行:一个整数 ( N ),表示景点数量,满足 ( …...

防孤岛保护装置在分布式光伏并网中的应用

什么是光伏的“孤岛效应” 孤岛islanding 包含负荷和电源的部分电网,从主网脱离后继续孤立运行的状态。孤岛可分为非计划性孤岛和计划性孤岛。 孤岛效应的危害 当电网侧停电检修,若并网光伏电站的逆变器仍在继续供电,维修人员不一定…...

记一次gitlab服务器负载过高问题处理

服务器上进程 /var/opt/gitlab/gitlab-rails/etc/unicorn.rb /opt/gitlab/embedded/service/gitlab-rails/config.ru 进程服务器cpu占用过高应该怎么处理 tail -f /var/log/gitlab/gitlab-rails/production.log调整 Unicorn 配置:unicorn.rb 是 Unicorn 服务器的配…...

LiT and Lean: Distilling Listwise Rerankers intoEncoder-Decoder Models

文章:ECIR 2025会议 一、动机 背景:利用LLMs强大的能力,将一个查询(query)和一组候选段落作为输入,整体考虑这些段落的相关性,并对它们进行排序。 先前的研究基础上进行扩展 [14,15]&#xff0c…...

【项目日记】高并发服务器项目总结

生活总是让我们遍体鳞伤, 但到后来, 那些受伤的地方一定会变成我们最强壮的地方。 -- 《老人与海》-- 高并发服务器项目总结 模块关系图项目工具模块缓冲区模块通用类型模块套接字socket模块信道Channel模块多路转接Poller模块 Reactor模块时间轮Tim…...

P1332 血色先锋队(BFS)

题目背景 巫妖王的天灾军团终于卷土重来,血色十字军组织了一支先锋军前往诺森德大陆对抗天灾军团,以及一切沾有亡灵气息的生物。孤立于联盟和部落的血色先锋军很快就遭到了天灾军团的重重包围,现在他们将主力只好聚集了起来,以抵…...

systemd 与 SysVinit

1. 什么是 systemd 和 SysVinit? systemd 和 SysVinit 都是 Linux 的初始化系统(init system),用于管理系统启动、服务、进程和日志。 比较项SysVinitsystemd启动方式逐步启动(串行)并行启动(…...

PythonWeb项目-Django+vue白酒数据推荐系统功能介绍

❥(^_-) 上千个精美定制模板,各类成品Java、Python、PHP、Android毕设项目,欢迎咨询。 ❥(^_-) 程序开发、技术解答、代码讲解、文档,💖文末获取源码+数据库+文档💖 💖软件下载 | 实战案例 💖文章底部二维码,可以联系获取软件下载链接,及项目演示视频。 本项目源…...

AWS Bedrock:开启企业级生成式AI的钥匙【深度解析】

引言:生成式AI的工业革命需要新基建 根据Gartner预测,到2026年超过80%的企业将在生产环境中部署生成式AI。而AWS Bedrock作为首个企业级生成式AI托管平台,正在重塑AI工业化落地的技术范式。本文将深入解构其技术架构与商业价值。 一、Bedroc…...

网络安全应急响应-文件痕迹排查

在Windows系统的网络安全应急响应中&#xff0c;文件痕迹排查是识别攻击行为的关键步骤。以下是针对敏感目录的详细排查指南及扩展建议&#xff1a; 1. 临时目录排查&#xff08;Temp/Tmp&#xff09; 路径示例&#xff1a; C:\Windows\TempC:\Users\<用户名>\AppData\L…...

【玩转全栈】—— Django 连接 vue3 保姆级教程,前后端分离式项目2025年4月最新!!!

本文基于之前的一个旅游网站&#xff0c;实现 Django 连接 vue3&#xff0c;使 vue3 能携带 CSRF Token 发送 axios 请求给后端&#xff0c;后端再响应数据给前端。想要源码直接滑倒底部。 目录 实现效果 解决跨域 获取 csrf-token 什么是 csrf-token &#xff1f; CSRF攻击的…...

网络安全·第一天·IP协议安全分析

本篇博客讲述的是网络安全中一些协议缺陷以及相应的理论知识&#xff0c;本博主尽可能讲明白其中的一些原理以及对应的防卫措施。 学习考研408的同学也能进来看看&#xff0c;或许对考研有些许帮助&#xff08;按照考研现在的趋势&#xff0c;年年都有新题目&#xff0c;本文当…...

TensorFlow深度学习实战——字符嵌入、子词嵌入、句子嵌入和段落嵌入

TensorFlow深度学习实战——字符嵌入、子词嵌入、句子嵌入和段落嵌入 0. 前言1. 字符嵌入2. 字词嵌入3. 句子嵌入和段落嵌入相关链接 0. 前言 在自然语言处理中&#xff0c;嵌入 (Embedding) 技术是将文本转化为数值向量的核心方法&#xff0c;使计算机能够理解和处理语言中的…...

剖析AI与5G:是夸大其词,还是时代变革的引擎?-优雅草卓伊凡

剖析AI与5G&#xff1a;是夸大其词&#xff0c;还是时代变革的引擎&#xff1f;-优雅草卓伊凡 在当今科技飞速发展的时代&#xff0c;AI与5G无疑是两大备受瞩目的焦点。近日&#xff0c;一个引人深思的问题浮出水面&#xff1a;“AI是不是被夸大了&#xff0c;就像当年的5G一样…...

Python Cookbook-5.7 在增加元素时保持序列的顺序

任务 你需要维护一个序列&#xff0c;这个序列不断地有新元素加入&#xff0c;但始终处于排序完毕的状态这样你可以在任何需要的时候检查或者删除当前序列中最小的元素。 解决方案 假设有一个未排序的列表&#xff0c;比如: the_list [903, 10, 35, 69, 933, 485, 519, 37…...

Ubuntu18系统安装

1、虚拟机安装 请参照之前的《虚拟机安装centos7-NAT网络模式安装》与《虚拟机安装centos7-桥接模式》 2、启动虚拟机进入系统的欢迎界面 选择English后并点击回车键(Enter) 3、进入安装页面 选择Countinue without updating并点击回车键(Enter) 4、键盘配置 选择Done并点击…...

【AIGC】零样本学习方法综述(TPAMI 2023 研究综述)

出版日期为2022年7月18日&#xff1b;工作由国家自然科学基金资助6217616年6061732011和61976141&#xff0c;部分由广东基础和应用基础研究基金资助2022A1515010791&#xff0c;部分由深圳大学自然科学基金会稳定支持计划资助号20200804193857002&#xff0c;部分由SZU的跨学科…...

Redis持久化之AOF

AOF&#xff08;Append Only File&#xff09;持久化&#xff1a;以独立日志的方式记录每次写命令&#xff0c;重启时再重新执行AOF文件中的命令达到恢复数据的目的。AOF的主要作用解决了数据持久化的实时性。 1.使用AOF 开启AOF需要设置配置文件&#xff1a; appendonly yes…...

QT6(12)3.3.1 Qt元对象系统概述:QObject 类与 QMetaObject 类,类型转换 qobject_cast<T>()。

&#xff08;33&#xff09;Qt元对象系统概述&#xff1a; QObject 类&#xff1a; 以及&#xff1a; 老师带咱们学生测试一下&#xff1a; 谢谢老师 &#xff08;34&#xff09;类型转换 qobject_cast( ) &#xff1a; 来自 一言的教导&#xff1a; &#xff08;35&#x…...

Electron使用WebAssembly实现CRC-32 STM32校验

Electron使用WebAssembly实现CRC-32 STM32校验 将C/C语言代码&#xff0c;经由WebAssembly编译为库函数&#xff0c;可以在JS语言环境进行调用。这里介绍在Electron工具环境使用WebAssembly调用CRC-32 STM32格式校验的方式。 CRC-32 STM32校验函数WebAssembly源文件 C语言实…...

C++11QT复习 (十五)

文章目录 Day10 标准模板库学习笔记&#xff08;2025.04.02&#xff09;一、函数和数组能否放入 STL 容器&#xff1f;1. 引用不能直接作为容器元素类型✅ 推荐做法&#xff1a;使用 std::reference_wrapper<T> 2. 函数不能直接作为容器元素类型✅ 推荐做法一&#xff1a…...

文件存储的路径简单分析

filename file_pic.filename pic /static/img/filename # 将文件的名称存储在数据库中&#xff0c;方便调取 p_file os.path.join(/home/enen/ee/static/img, filename) file_pic.save(p_file) # 保存文件到指定目录&#xff0c;具体项目是要根据项目的存储地址来看的…...

汽车与航空航天领域软件维护:深度剖析与未来展望

一、引言 在当今科技飞速发展的时代&#xff0c;汽车和航空航天领域的软件应用愈发广泛和深入&#xff0c;软件已成为这些行业系统的核心组成部分。从汽车的智能驾驶辅助系统到航空航天飞行器的飞行控制软件&#xff0c;软件的可靠性、安全性直接关系到整个系统的正常运行和人…...

吉利汽车采用 EMQX 与AutoMQ联合方案构建公私有云一体化的车联网核心架构

吉利汽车集团 数字化基础架构总工程师 洪旅杭 关于吉利汽车 吉利汽车集团在中国上海、宁波、以及海外等地建有造型设计和工程研发中心&#xff0c;研发实力雄厚。在中国、马来西亚建有世界一流的现代化整车和动力总成制造工厂&#xff0c;拥有各类销售网点超过 1400 多家&…...

深圳漫云科技户外公园实景儿童剧本杀小程序:开启亲子互动新纪元

在亲子娱乐需求日益增长的当下&#xff0c;深圳漫云科技推出的户外公园实景儿童剧本杀小程序&#xff0c;凭借其创新玩法与丰富功能&#xff0c;为亲子家庭带来全新体验。该小程序融合户外探险、角色扮演与逻辑推理&#xff0c;不仅满足孩子好奇心&#xff0c;更提升其思维能力…...

如何实现H5端对接钉钉登录并优雅扩展其他平台

如何实现H5端对接钉钉登录并优雅扩展其他平台 钉钉H5登录逻辑后端代码如何实现&#xff1f;本次采用策略模式工厂方式进行定义接口确定会使用的基本鉴权步骤具体逻辑类进行实现采用注册表模式&#xff08;Registry Pattern&#xff09;抽象工厂进行基本逻辑定义具体工厂进行对接…...

借助 AI 工具使用 Python 实现北京市店铺分布地理信息可视化教程

一、项目概述 本项目通过 Python 的pyecharts库&#xff0c;结合 AI 工具辅助代码编写与逻辑梳理&#xff0c;实现北京市店铺数量分布及区域连线的地理信息可视化&#xff0c;最终生成交互式地图图表。 二、准备工作 1. 环境与工具 Python 环境&#xff1a;确保已安装 Pyth…...

如何选择优质的安全工具柜:材质、结构与功能的考量

在工业生产和实验室环境中&#xff0c;安全工具柜是必不可少的设备。它不仅承担着工具的存储任务&#xff0c;还直接影响工作环境的安全和效率。那么&#xff0c;如何选择一个优质的安全工具柜呢&#xff1f;关键在于对材质、结构和功能的考量。 01材质&#xff1a;耐用与防腐 …...

使用Vue、Nodejs以及websocket搭建一个简易聊天室

简易聊天室 说在前面效果展示websocketwebsocket的由来websocket的特点 vue前端静态结构效果代码 点击切换用户以及该用户高亮实现思路效果展示 发送消息功能效果展示 连接服务端 Nodejs服务器端实现步骤代码 说在前面 在学习计算机网络的时候&#xff0c;看到了websocket这个…...

node.js使用pnpm运行时报错“Command failed with exit code 1.“怎么办

目录 遇到的问题 问题排查 遇到的问题 在使用pnpm dev运行时报错"Command failed with exit code 1." 如图 问题排查 是先使用pnpm install指令进行安装 然后使用pnpm dev&#xff0c;出现的问题 查看版本号node 发现是版本号高了 将node_modules文件夹删除 通…...

从GPU加速到深度学习革命 —— AlexNet论文概述

广泛认为&#xff0c;将显卡&#xff08;GPU&#xff09;用于深度学习模型训练这一突破性发现&#xff0c;主要归功于2012年发表的经典论文《ImageNet Classification with Deep Convolutional Neural Networks》。在这篇论文中&#xff0c;Alex Krizhevsky、Ilya Sutskever 和…...

视频分析设备平台EasyCVR打造汽车门店经营场景安全:AI智慧安防技术全解析

一、方案背景 某电动车企业不停爆出维权新闻&#xff0c;支持和反对的声音此起彼伏&#xff0c;事情不断发酵、反转&#xff0c;每天都有新消息&#xff0c;令人目不暇接。车展、车店作为维权事件的高发场所&#xff0c;事后复盘和责任认定时&#xff0c;安防监控和视频监控平…...

Python•判断循环

ʕ⸝⸝⸝˙Ⱉ˙ʔ ♡ 判断🍰常用的判断符号(比较运算符)andor括号notin 和 not inif-elif-else循环🍭计数循环 forrange()函数简易倒计时enumerate()函数zip()函数遍历列表遍历元组遍历字符串遍历字典条件循环 while提前跳转 continue跳出循环 break能量站😚判断🍰 …...

导入python包模块时报错Segmentation fault (core dumped)的解决思路

一、问题概述 有时候我们在Linux环境下执行代码时&#xff0c;会莫名奇妙出现Segmentation fault (core dumped)这个报错&#xff0c;很难定位到问题&#xff0c;就算定位到了&#xff0c;如果发现是导包的问题&#xff0c;也很难判断。所以记录下相关解决方式&#xff0c;以待…...

tcp转串口

windows 在 Windows 系统上&#xff0c;可以使用以下成熟的串口转 TCP 工具&#xff1a; HW VSP3 (HW Virtual Serial Port) 提供串口到 TCP/IP 的映射功能。支持虚拟串口和网络通信。下载地址&#xff1a;HW Group com0com com2tcp 开源工具&#xff0c;支持虚拟串口和 TCP…...

杂谈:抖音双塔召回模型:亿级内容分发的数学魔法

在信息爆炸的数字时代&#xff0c;我们每天都被海量内容包围。以抖音为例&#xff0c;这个日活跃用户数亿的平台&#xff0c;每分钟就有数以万计的新视频上传。面对如此庞大的内容库&#xff0c;一个核心问题自然浮现&#xff1a;系统如何从这浩瀚的内容海洋中&#xff0c;为每…...

Set 集合

默认情况下&#xff0c; Scala 使用的是不可变集合&#xff0c; 如果你想使用可变集合&#xff0c; 需要引用 scala.collection.mutable.Set Set 默认是不可变集合&#xff0c;数据无序 数据不可重复 遍历集合 创建可变集合 mutable.Set 打印集合 集合添加元素 向集合中…...

青蛙吃虫--dp

1.dp数组有关元素--路长和次数 2.递推公式 3.遍历顺序--最终影响的是路长&#xff0c;在外面 其次次数遍历&#xff0c;即这次路长所有情况都更新 最后&#xff0c;遍历次数自然就要遍历跳长 4.max时时更新 dp版本 #include<bits/stdc.h> using namespace std; #def…...

加油站小程序实战教程08用户注册

目录 1 授权手机号2 前端调用API总结 上一篇我们介绍了小程序的登录功能&#xff0c;当用户未注册的时候&#xff0c;点击自动加油按钮会弹出授权手机号&#xff0c;然后进行注册&#xff0c;本篇我们介绍一下用户注册的开发过程。 1 授权手机号 微搭提供了小程序手机号获取的…...

进程内存分布--之showmap呈现memory-layout.cpp内存分布

上一篇我们讲了&#xff1a;进程内存分布--之pmap呈现memory-layout.cpp内存分布 我们这里讲一个用于分析内存占用的更直观的方式&#xff0c;showmap来看看会是什么呈现效果&#xff1a; 我们再来使用showmap命令来看下它是怎么呈现内存分布的&#xff1a; 可以看到showmap…...

vim/vi程序(1)

今天我们来学习一下一个编辑器,vim(vi是以前的版本),这个是linux常用的编辑器,我们是必须要学习滴,来看. 各种模式示意图&#xff1a; 案例&#xff1a; vim aaa.txt 按i进入编辑模式,此时可以输入 按ESC可以退出 :进入命令模式 输入wq保存并退出 今天大家先简单了解一下基础…...

【Python】案例:计算股票收益率和波动率

【Python】案例&#xff1a;计算股票收益率和波动率&#xff1a; 1、案例需求2、数据准备3、案例实现 1、案例需求 在分析股票数据时&#xff0c;我们需要从这些数据中得到一些关键指标进行评估&#xff0c;比如收益率、波动率&#xff0c;其中收益率又可以细分为简单收益率和…...