Redis深入理解-主从架构下内核数据结构、主从同步以及主节点选举
Redis 主从挂载后的内核数据结构分析
- 主节点中,会通过 clusteNode 中的
slaves来记录该主节点包含了哪些从节点,这个slaves是一个指向*clusterNode[]数组的数据结构 - 从节点中,会通过 clusterNode 中的
slaveof来记录该从节点属于哪个主节点,指向了主节点的 clusterNode
下图带颜色的为主从架构中的内核数据结构:

Redis SYNC 主从复制原理以及缺陷
Redis 的主从复制是在不断演进过程中的,那么主从复制的目的也就是将主节点上的数据传输给从节点
那么这个演进过程中的目的就是尽量加快主节点数据向从节点的同步速度
首先,需要考虑当从节点第一次连接上主节点后,如何同步主节点的数据呢?
其次要考虑如果从节点宕机或者重启之后,重新连接上主节点,此时又该如何同步主节点的数据呢?
从节点第一次连接上主节点,我们可以通过生成 RDB 快照,将数据全量同步给从节点,并将之后的命令通过缓冲区不断同步给从节点
如果从节点断线之后重连主节点,那么我们就要合理的设置缓冲区的大小,来保证尽量进行增量同步,而不是全量同步
因此主从复制演进过程中的目标就是能增量同步就增量同步,尽量避免全量同步
关于主从复制原理的演进过程以及百度智能云在主从复制上的优化实践,可以参考文章:Redis 主从复制原理以及痛点
Redis 定时 PING 与疑似下线分析
接下来我们来了解一下在 Redis 主从架构下,如何进行故障探测?
每个 redis 节点,都会定时发送 ping 消息给其他所有节点,探测其他节点是否存活,如果节点存活,则会返回 pong 消息,在规定时间没有收到 pong 消息的话,发送 ping 消息的节点就会将该节点标记为 pfail(疑似下线)
如果在集群中有半数以上的节点认为一个节点疑似下线,那么此时就可以将该节点标记为 fail(正式下线)
那么这就是故障探测的原理,就是通过 ping+pong 消息进行探测,当集群半数以上节点认为某个节点疑似下线,那么就将该节点标记为正式下线,并且将该节点正式下线的消息同步给其他所有节点
Redis 主节点选举算法以及故障转移
在 Redis 主从架构中,master 挂掉之后,该 master 下的 slave 会感知到主节点的下线状态,就会尝试向其他主节点发送投票请求,表示自己想要当 master 节点,那么其他 master 会投票给收到的第一个请求的 slave 节点
如果一个 slave 收到了半数以上 master 的投票,那么该 slave 就被选举成为了新的 master,他再去通知所有的节点,并且将之前下线的 master 的槽位转移到自己这里,之后所有的 slave 都从新的主节点中同步数据
那么这个主节点选举的流程原理可以参考文章:Redis切片集群以及主节点选举机制
总结
通过 Redis 深入理解,可以从总体上了解到 Redis 单体架构下,server 端是如何运行起来的,以及他是如何客户端建立连接并且接收客户端时间进行处理这样一个流程
以及在 Redis 集群模式下,Redis 主从节点的内核数据结构是怎样的,集群之间槽位的转移,集群节点之间通信,集群故障探测原理,主从同步数据原理以及主节点选举原理
如果需要进一步了解 Redis 内核,可以从以下几个方面入手:
- Redis 内核数据结构
- 持久化机制
- pub/sub、事务、lua、慢查询
相关文章:
Redis深入理解-主从架构下内核数据结构、主从同步以及主节点选举
Redis 主从挂载后的内核数据结构分析 主节点中,会通过 clusteNode 中的 slaves 来记录该主节点包含了哪些从节点,这个 slaves 是一个指向 *clusterNode[] 数组的数据结构从节点中,会通过 clusterNode 中的 slaveof 来记录该从节点属于哪个主…...
java中BigDecimal的介绍及使用(二)
系列文章目录 java中BigDecimal的介绍及使用,BigDecimal格式化,BigDecimal常见问题java中BigDecimal的介绍及使用(二) 文章目录 系列文章目录一、前言二、BigDecimal提供的方法2.1、stripTrailingZeros() 去除小数尾部所有的02.2、int signum()2.3、int…...
NX二次开发UF_MTX3_identity 函数介绍
文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan UF_MTX3_identity Defined in: uf_mtx.h void UF_MTX3_identity(double identity_mtx [ 9 ] ) overview 概述 Returns a 3 x 3 identity matrix. 返回一个3 x 3的单位矩阵。 UFUN…...
解决Hadoop DataNode ‘Incompatible clusterIDs‘报错
问题 启动hadoop时报错Failed to add storage directory 2023-11-26 12:02:06,840 WARN common.Storage: Failed to add storage directory [DISK]file:xxx java.io.IOException: Incompatible clusterIDs in xxx/dfs/data: namenode clusterID CID-xxxxxx; datanode cluste…...
计算机毕业设计|基于SpringBoot+MyBatis框架的电脑商城的设计与实现(系统概述与环境搭建)
计算机毕业设计|基于SpringBootMyBatis框架的电脑商城的设计与实现(系统概述与环境搭建) 该项目分析着重于设计和实现基于SpringBootMyBatis框架的电脑商城。首先,通过深入分析项目所需数据,包括用户、商品、商品类别、收藏、订单…...
神器!使用 patchworklib 库进行多图排版真棒啊
如果想把多个图合并放在一个图里,如图,该如何实现 好在R语言 和 Python 都有对应的解决方案, 分别是patchwork包和patchworklib库。 推介1 我们打造了《100个超强算法模型》,特点:从0到1轻松学习,原理、…...
MySQL -DDL 及表类型
DDL 创建数据库 CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, create_specification] ...] create_specification:[DEFAULT] CHARACTER SET charset_name [DEFAULT] COLLATE collation_name 1.CHARACTER SET:…...
主从同步机制
RocketMQ的Broker分为Master和Slave两个角色,为了保证高可用性,Master角色的机器接收到消息后,要把内容同步到Slave机器上,这样一旦Master宕机,Slave机器依然可以提供服务。下面分析Master和Slave角色机器间同步功能实…...
Leetcode算法系列| 3. 无重复字符的最长子串
目录 1.题目2.题解C# 解法一:滑动窗口算法C# 解法二:索引寻找Java 解法一:滑动窗口算法Java 解法二:遍历字符串 1.题目 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 示例1: 输入: s "ab…...
Spring Cache(缓存框架)
学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您: 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持,想组团高效学习… 想写博客但无从下手,急需…...
android开发:安卓13Wifi和热点查看与设置功能
近日对安卓热点功能做了一些技术验证,目的是想利用手机开热点给设备做初始化,用的是安卓13,简言之: 热点设置功能不可用,不可设置SSID和密码,不可程序控制开启关闭,网上的代码统统都过时了Loca…...
Java中的mysql——面试题+答案——第24期
当涉及MySQL时,面试题可以涵盖更多高级主题、安全性和实践经验。 MySQL中的存储引擎InnoDB和MyISAM的区别是什么? 答案: InnoDB支持事务,而MyISAM不支持。InnoDB使用行级锁,而MyISAM使用表级锁。InnoDB支持外键&#x…...
王者小游戏
游戏里的经验动物 Bear package beast; import sxt.GameFrame; public class Bear extends Beast {public Bear(int x, int y, GameFrame gameFrame) {super(x, y, gameFrame);setImg("C:\\Users\\辛欣\\OneDrive\\桌面\\王者荣耀图片(1)\\王者荣耀图片\\beast\\bear.jp…...
using meta-SQL 使用元SQL
%DatePart Syntax %DatePart(DTTM_Column) Description The %DatePart meta-SQL variable returns the date portion of the specified DateTime column. DatePart meta-SQL变量返回指定的DateTime列的日期部分。 Note: This meta-SQL variable is not implemented for COBOL. …...
函数式接口
作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO 联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬 咱们今天讨论下函数式接…...
使用shell快速查看电脑曾经连接过的WiFi密码
此方法只能查看以前连接过的wifi名称和对应的密码 查看连接过的WiFi名称netsh wlan show profiles查看具体的WiFi名称netsh wlan show profile name"你的wifi名称" keyclear...
通过亚马逊云科技云存储服务探索云原生应用的威力
文章作者:Libai 欢迎来到我们关于“使用亚马逊云科技云存储服务构建云原生应用”的文章的第一部分。在本文中,我们将深入探讨云原生应用的世界,并探索亚马逊云科技云存储服务在构建和扩展这些应用中的关键作用。 亚马逊云科技开发者社区为开发…...
Boot工程快速启动【Linux】
Boot工程快速启动【Linux】 在idea中打包cd usr/在local文件夹下mkdir app进入app文件夹把打包好的文件(只上传其中的jar)上传到app文件下检查linux中的Java版本,保证和项目的Java 版本保持一致运行 java -jar sp补全***.jar想看效果得查询当…...
三 STM32F4使用Sys_Tick 实现微秒定时器和延时
更多细节参考这篇 1. 什么是时钟以及作用 1.1 什么是时钟 时钟是由电路产生的周期性的脉冲信号,相当于单片机的心脏 1.2 时钟对于STM32的作用 指令同步:cpu和内核外设使用时钟信号来进行指令同步数据传输控制: 时钟信号控制数据在内部总…...
唯创知音WT2003H系列MP3录音语音芯片:高精度ADC与DAC,强大IO驱动能力成就音频卓越
在音频领域里,高精度和强大的驱动能力一直是工程师们追求的目标。唯创知音的WT2003H系列MP3录音芯片恰好满足了这一需求,该芯片具备16 bit高精度的ADC及DAC功能,大功率的IO驱动能力,能够直接驱动64mA,为电子产品带来卓…...
深度拆解 GEO 服务商收费标准及影响因素|北京聚微文化传媒
深度拆解 GEO 服务商收费标准及影响因素|北京聚微文化传媒作者:北京聚微文化传媒GEO 优化专家团队在生成式引擎优化(GEO)领域,传统 “按关键词排名” 计费已不再适用。GEO 的核心是让大模型(LLM)…...
Go赋值操作的关键细节
一、: 短变量声明的细节1.作用域规则2.重复声明规则3类型推断二、 赋值操作的细节1.类型必须匹配2.多重赋值特性三、 零值初始化细节1.Go为所有类型提供零值四、指针赋值的细节1.基本指针操作理解这段代码的关键在于搞清楚两个概念:普通变量、指针变量,…...
模拟量采集模块:多点位同步采样,数据一致性更高
无论是车间里机床的振动监测,还是智慧大棚的土壤湿度采集,亦或是变电站的电压电流监测,都离不开它的身影。模拟量采集系列模块连接着现场连续变化的物理量,一边对接着可处理分析的数字系统,默默完成“信号翻译”的核心…...
Artisan:从咖啡豆到完美烘焙,掌握专业级烘焙曲线可视化工具
Artisan:从咖啡豆到完美烘焙,掌握专业级烘焙曲线可视化工具 【免费下载链接】artisan artisan: the worlds most trusted roasting software 项目地址: https://gitcode.com/gh_mirrors/ar/artisan 你是否曾经在烘焙咖啡豆时,感觉整个…...
【OpenClaw企业级智能体实战】第27篇:Skill生态运营——企业私有Skill商店的搭建与审核机制
摘要:2026年ClawHavoc供应链攻击事件曝光超1200个恶意Skill渗透公共技能市场,工信部明确要求企业审慎使用第三方技能包并严格审查代码。本文基于真实安全事件与行业实践,完整讲解企业私有Skill商店从0到1搭建方案,覆盖小团队极简GitLab私有仓库、中大型企业Nacos 3.2私有Re…...
千帆竞发:126颗卫星升空背后的全球卫星互联网竞速
2026年4月7日21时32分,长征八号运载火箭在海南商业航天发射场拔地而起,以“一箭十八星”的方式将千帆星座第七批18颗组网卫星送入预定轨道。发射取得圆满成功。此次发射后,千帆星座在轨卫星总数达到126颗,标志着我国自主可控的低轨…...
游戏开发者看过来:用Aseprite 1.3.12高效制作精灵表与动画的实战指南
游戏开发者看过来:用Aseprite 1.3.12高效制作精灵表与动画的实战指南 在独立游戏开发中,像素艺术不仅是怀旧情怀的载体,更是现代游戏设计的重要视觉语言。作为一款专为像素艺术设计的工具,Aseprite 1.3.12凭借其轻量级和专业性&am…...
傲梅分区助手 使用教程:免安装硬盘分区管理工具
一、工具简介 傲梅分区助手是一款功能强大的硬盘分区管理工具,支持无损数据调整分区大小、合并/拆分分区、迁移系统到 SSD 等操作。 安装包下载:https://pan.xunlei.com/s/VOpm6nKehfUHH-MDyIbMIhGkA1?pwdpm5g# 二、使用步骤 1. 解压工具包 右键点…...
如何永久保存你的数字记忆:WeChatMsg聊天记录导出与年度报告生成终极指南
如何永久保存你的数字记忆:WeChatMsg聊天记录导出与年度报告生成终极指南 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub…...
ag-Grid 动态合并单元格实战:基于条件样式的行合并技巧
1. 初识ag-Grid合并单元格 第一次看到ag-Grid的合并单元格效果时,我正为一个客户管理系统头疼——表格里重复的省份和性别字段让数据显得杂乱无章。直到发现rowSpan这个神奇属性,才明白原来数据表格可以像Excel那样优雅地合并相同内容。 ag-Grid的合并单…...
