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

Redis的单多线程、主从复制、RDB与AOF原理学习心得

Redis单线程与多线程机制

首先,要搞懂Redis是单线程还是多线程

  • 核心命令处理 =单线程
    Redis 处理客户端的读写命令(get/set/delete…) 全程只用一个主线程。所有命令排队执行,不存在多线程竞争、锁、线程切换开销,这是 Redis 极快的核心原因之一
  • 网络 IO / 持久化 =多线程
    Redis 不是全程单线程,
    后台任务用多线程:
    网络 IO 读写(6.0+ 引入多线程 IO)
    RDB 快照AOF 重写
    异步删除、lazy free
    主从复制

一、单线程机制

  1. 基于内存
    所有操作在内存完成,纳秒级响应
  2. 单线程无锁竞争
    不用加锁、解锁
    没有线程上下文切换
    代码简单、稳定、不易出 bug
  3. 关键:使用了 IO 多路复用技术
    一个线程就能同时监听成千上万个连接,这是 Redis 高性能的底层基石。

IO多路复用
单个线程,通过一个系统调用,同时监听多个 socket 的读写事件。
当某个 socket 就绪(可读 / 可写),就去处理,不阻塞、不浪费 CPU。

分步流程
1.注册监听:主线程把所有客户端 Socket 连接,全部注册到 IO 多路复用器 中。多路复用器:统一托管所有连接。
2.阻塞等待事件:多路复用器进入阻塞状态,不占用 CPU,静静等待任意客户端发请求(读 / 写事件)。
3. 事件触发:某一个 / 多个客户端发送数据,对应 Socket 变为就绪状态。
4.唤醒主线程:多路复用器立刻返回就绪的连接列表,唤醒主线程。
5.串行处理任务:主线程遍历就绪连接,逐个执行 Redis 命令(单线程串行,无锁竞争)。
6.结果返回:命令处理完成,把响应数据写回对应客户端,之后主线程再次回到阻塞等待状态,继续等待新事件。


Redis的主从复制

简介

Redis 主从复制,指一台主节点(Master) 将自身的数据,自动同步到一台或多台从节点(Slave) 的机制。
架构上遵循一主多从模式:

  • 主节点:承担写操作,接收新增、修改、删除请求
  • 从节点:默认只读,只处理查询请求,不对外提供写服务

流程图示

核心特点

读写分离:如图
其中master节点专门负责写操作(set k1 v1)
follower节点专门负责读操作(get k1)

注意:
1.数据必须一致(一致性问题)不是强一致,
而是最终一致(同步数据有延时,允许在一段时间内数据不一致)
言下之意:master有新数据那么follower也必须要有这个新数据

2.master如果一旦宕机,那将如何?follower一直等待master活过来,
依然作为master的小弟(从机 不会篡位)。此时会产生问题:在这段时间内,redis主从架构不能提供写服务

哨兵模式

1.核心作用:

解决主从复制中主节点宕机后无法自动故障转移的问题,实现主节点的自动选举与切换

2. 工作原理与流程

  • 健康监控
    哨兵通过定时任务(类似 setInterval()),定期向 master 节点发送远程调用,做健康检查。
    如果返回 status = “unavailable”,判定 master 节点宕机。
  • 故障通知
    哨兵检测到 master 宕机后,会向所有 follower 节点发送通知,告知 master 已宕机,让它们准备进行新主选举。
  • 故障转移与主从切换
    从 follower 中选举一台作为新的 master 节点。
    原 master 节点恢复后,会自动降级为新 master 的从节点,继续同步数据(master<->follower 关系反转)。

3.流程图示

  • 哨兵一旦监听到Master节点宕机此时就会给follower节点发送通知,告知,master已经宕机,做好选举准备,随机选择一台机器上位,那么当原来的master恢复后,那么这个master节点就会自动成为新的master节点的从机

RDB与AOF

一、核心概念

Redis 是内存数据库,数据默认存储在内存中,服务重启会丢失数据。持久化就是把内存数据写入磁盘,实现数据的灾备与恢复,主要分为 RDB 和 AOF 两种方案,也支持两者结合的混合持久化。

二、RDB(Redis Database)持久化

1. 原理

将 Redis 内存中的数据做快照(snapshot),保存为一个 .rdb 二进制文件,用于灾备与恢复。

2. 优缺点

优点缺点
性能好:直接序列化内存数据,文件体积小,恢复速度快会丢失数据:两次快照之间的数据无法保存,故障时会丢失最近一次快照后的所有数据
不占用磁盘额外开销(相比 AOF 日志)快照过程中如果数据量极大,fork 子进程可能短暂影响性能

3. 两种实现方式

(1)save(同步阻塞)

特点:主线程直接执行快照,会阻塞所有客户端请求,生产环境不推荐。

配置方式(redis.conf)
格式:save <秒数> <修改次数>,表示指定秒数内修改次数达到阈值则触发RDB
save 3600 1 # 3600秒(1小时)内至少1次修改
save 300 100 # 300秒(5分钟)内至少100次修改
save 60 10000 # 60秒内至少10000次修改

(2)bgsave(非阻塞,主流方式)

特点:主线程调用 fork() 创建子进程,由子进程完成快照写入磁盘,主线程继续处理客户端请求,不阻塞业务。
关键技术
写时复制(Copy-On-Write, COW)

  • 子进程 fork 时,和父进程共享同一份内存数据副本;
  • 主线程后续修改数据时,会先复制一份副本给子进程,保证子进程快照的是 fork 瞬间的数据,互不干扰。

三、AOF(Append Only File)持久化

1. 原理

记录客户端发送的每一条写命令,追加到.aof日志文件末尾,重启时重放日志恢复数据。

2. 优缺点

优点缺点
数据安全:支持每秒 / 每次写操作同步,几乎不丢数据性能开销大:文件会持续膨胀,重放恢复速度慢
日志可读,可手动修改(如误删数据时)写命令追加 + 重写会占用额外磁盘 IO,高并发场景性能不如 RDB

3. 配置与刷盘策略(redis.conf)

appendonly yes # 开启AOF持久化
刷盘策略(三选一)
appendfsync always 每次写操作都同步刷盘,数据零丢失,性能最差
appendfsync everysec # 每秒刷盘一次,默认配置,平衡性能与数据安全
appendfsync no 不主动刷盘,由操作系统决定,性能好但可能丢数据

4. AOF 重写机制

AOF 文件会随写操作持续变大,Redis 会自动触发重写,压缩日志体积:

auto-aof-rewrite-percentage 100 # 文件大小比上一次重写后增长100%(即翻倍)时触发
auto-aof-rewrite-min-size 64mb # 触发重写的最小文件大小(低于64MB不触发)

四、RDB vs AOF 对比与建议

维度RDBAOF
数据安全丢数据(取决于快照间隔)几乎不丢数据(取决于刷盘策略)
性能高(快照写入,恢复快)低(日志追加 + 重放,恢复慢)
文件体积小(二进制快照)大(命令日志,重写后会压缩)
故障恢复
http://www.jsqmd.com/news/932745/

相关文章:

  • 2026年Q2国内视频剪辑软件培训机构专业度排行:软件测试就业培训/软件测试线下就业培训/亚马逊电商设计培训/外贸电商设计培训/选择指南 - 优质品牌商家
  • 从‘看向’到‘对齐’:深入拆解Unity中Quaternion.LookRotation的双参数玩法,搞定模型导入朝向纠偏
  • 告别‘近大远小’:用OpenCV和Python手把手实现车道线IPM鸟瞰图变换(附代码)
  • 工程师工作日志:杰理AC696N开发蓝牙音箱时,做TWS对箱按键配对功能配置
  • 2026年6月新发布观察:温州极窄门锁实力厂商的性价比突围之路 - 2026年企业资讯
  • 带外生变量的时间序列预测Python实战包(ARIMAX模型+数据+可视化)
  • 基于ESP-01与WS2812B的智能灯带控制器:从硬件设计到网页控制
  • 2026 无锡阳台地砖起拱修复机构排行 七大区专业修缮企业汇总 - 吉修匠
  • 2026年好用的男士假发公司排行榜,怎么选? - mypinpai
  • 2026 无锡各区瓷砖翘边松动维修实力排行 正规修缮企业综合测评 - 吉修匠
  • 全域视觉破壁新生 跨镜轨迹永续构筑智慧安防新生态技术解析方案
  • 2026年假发性价比排名:久潮假发性价比如何? - mypinpai
  • 几字型龙骨行业实测评测:数据中心施工/数据中心机房吊顶/数据中心机房建设/数据中心机房瓦楞板/数据中心瓦楞钢板/选择指南 - 优质品牌商家
  • Claude Code 省钱实战,用 Subagent 交接代替直接切换模型
  • Unity 2022.3 LTS 实战:用LineRenderer 5分钟搞定游戏里的闪电链特效(附完整C#脚本)
  • 2026 无锡老房瓷砖空鼓修复企业推荐 七大区靠谱修缮团队汇总 - 吉修匠
  • 基于 VSCode + Icarus 的 Verilog 编译和仿真
  • 2026 无锡瓷砖空鼓免砸砖修复机构推荐 七大区正规服务商汇总 - 吉修匠
  • 2026年年度排名,广告展示材料器材口碑好的品牌推荐 - mypinpai
  • 专业网络资源下载工具res-downloader:从入门到精通的完整指南
  • 用Python和螺旋理论手把手教你计算UR5机械臂的末端位姿(附完整代码)
  • YOLOv8工地运输车识别检测系统(项目源码+YOLO数据集+模型权重+UI界面+python+深度学习+环境配置)
  • 2026 无锡商铺瓷砖空鼓翘边维修机构排名 七大区商业修缮服务商盘点 - 吉修匠
  • Seraphine:英雄联盟玩家的智能决策伙伴,让每一局游戏都更胜一筹
  • 【记录】Ubuntu|Ubuntu 26.04 笔记本耗电过快,排查 省电过程
  • 从阿克曼转向到状态方程:手把手推导自动驾驶中的二自由度车辆模型(附Python代码)
  • 2026广州家庭搬家靠谱选择:广州人人搬屋/广州仓库搬迁/广州别墅搬家/广州天河搬家/广州家庭搬家/广州小型搬家/选择指南 - 优质品牌商家
  • PHP影视建站源码包:含多模板切换、myopia采集脚本、APP/H5/PC三端支持
  • 万字长文!深入剖析现代浏览器渲染引擎在处理 CSS Grid 响应式布局时的重绘重排损耗
  • 2026年上海遗嘱继承律师盘点:上海遗产律师/上海遗嘱律师/上海遗嘱继承律师/上海遗嘱见证律师/上海单方起诉离婚律师/选择指南 - 优质品牌商家