发布时间:2026/6/13 23:38:55
Redis高可用面试知识:持久化+主从复制+哨兵机制
Redis高可用面试知识持久化主从复制哨兵机制一、Redis RDB 持久化原理快照持久化RDBRedis Database是Redis默认的持久化方式核心原理是全量快照。在指定时间节点将内存中所有数据以二进制形式持久化到磁盘生成.rdb快照文件Redis重启时可通过该文件快速恢复全量数据。1、触发机制手动自动1手动触发SAVE主线程执行快照全程阻塞Redis不推荐生产使用BGSAVEfork子进程完成快照写入主线程继续处理客户端请求无阻塞生产默认使用2自动触发配置规则通过配置文件配置规则满足条件自动执行BGSAVE例如save 900 1表示900秒内至少1个key变更自动触发快照。同时执行flushall、正常关闭Redis也会自动触发RDB持久化。2、核心执行流程fork子进程主线程调用fork创建子进程此时会短暂阻塞Redis拷贝页表内存快照写入子进程基于操作系统写时复制机制COW读取当前内存全量数据写入临时RDB文件文件替换写入完成后用临时文件替换正式rdb文件保证文件完整性结束进程子进程退出持久化完成。3、RDB优缺点面试必背优点文件是二进制压缩文件体积小、恢复速度极快基于子进程执行不阻塞主线程性能损耗低适合冷备份、全量数据迁移、灾难恢复。缺点数据丢失风险大两次快照之间的增量数据未落地Redis宕机会丢失间隔内所有数据大数据量下fork子进程耗时久会引发短暂服务卡顿无法实现秒级、实时持久化数据安全性差。二、Redis AOF 持久化原理日志持久化AOFAppend Only File是增量日志持久化方案默认关闭。核心原理是记录Redis所有写操作命令读操作不记录以日志追加的方式写入aof文件重启时重放日志命令恢复数据主打高数据安全性。1、核心执行流程命令追加客户端执行写命令Redis将命令协议格式追加到AOF缓冲区缓冲区刷盘根据配置策略将缓冲区数据同步写入磁盘aof文件日志重写文件过大时触发AOF重写精简冗余命令压缩文件体积重启恢复服务重启时逐条执行aof文件中的命令还原内存数据。2、三大刷盘策略面试高频always每执行一条写命令立即刷盘。数据零丢失但是性能极差高并发禁用everysec默认每秒批量刷盘一次。性能均衡最多丢失1秒数据生产最常用no交由操作系统自主刷盘。性能最高丢失数据不可控安全性最低。3、AOF重写机制核心优化AOF持续追加命令会导致文件无限膨胀存在大量冗余命令如多次修改同一个key。Redis通过AOF重写精简日志fork子进程基于当前内存数据生成最简写命令替换旧日志文件大幅缩小文件体积、提升重启恢复速度。重写过程不影响主线程读写。4、AOF优缺点优点数据安全性极高默认策略仅丢失1秒数据日志文本格式清晰可手动修改、修复数据增量持久化无全量快照的卡顿问题。缺点日志文件体积远大于RDB恢复速度慢于RDB持续刷盘、重写会带来一定性能开销纯AOF重启恢复海量数据时速度较慢。自动触发满足两个条件 同时满足以下两个配置条件时自动触发当前 AOF 文件大小 auto-aof-rewrite-min-size 默认 64MB当前 AOF 文件大小 比 上次重写后大小 增长比例超过 auto-aof-rewrite-percentage 默认 100% 即翻倍 简单记 文件够大 比上次重写时大了一倍 → 自动重写三、RDBAOF 混合持久化Redis4.0 生产终极方案Redis 4.0 推出混合持久化机制完美结合RDB和AOF的优势解决了RDB数据不安全、AOF恢复慢的双重痛点是目前生产环境默认推荐开启的持久化方案。1、核心原理开启混合持久化后执行AOF重写时前半段将当前内存全量数据以RDB二进制格式写入AOF文件后半段追加重写过程中产生的增量AOF命令日志。最终AOF文件 RDB全量快照 AOF增量日志。2、重启恢复逻辑Redis重启时优先解析AOF文件先快速加载前段RDB二进制全量数据再重放后段增量AOF命令既保证恢复速度又保证数据完整性。3、核心优势与面试总结兼顾恢复速度RDB优势与数据安全AOF优势解决纯AOF文件过大、恢复慢的问题同时避免纯RDB丢失增量数据的缺陷生产环境必开是Redis持久化的最优解。四、Redis 主从复制原理高可用基础主从复制是Redis高可用的基础架构核心实现一主多从、数据单向同步主节点负责读写从节点同步主节点数据、分担读压力实现读写分离、数据备份为哨兵、集群架构提供支撑。1、主从复制核心流程完整三阶段1建立连接阶段从节点启动后向主节点发起连接请求主节点校验权限、端口建立长连接持续监听主节点写命令。2全量同步阶段首次同步主节点执行BGSAVE生成RDB快照将快照文件发送给从节点从节点清空本地旧数据加载RDB文件完成全量数据同步。同步期间主节点缓存新增写命令同步完成后补发缓存命令。3增量同步阶段持续同步全量同步完成后进入持续增量同步。主节点每执行一条写命令实时同步给从节点保证主从数据最终一致。基于复制偏移量复制积压缓冲区实现部分重同步避免网络断连后重复全量同步。2、核心机制部分重同步repl-backlogRedis为解决网络短暂断开、频繁全量同步的性能问题引入复制积压缓冲区主节点维护固定长度缓冲区记录近期写命令与偏移量。从节点断连重连后对比本地偏移量与主节点缓冲区偏移量若数据仍在缓冲区仅同步缺失增量数据无需全量同步大幅提升同步效率。3、主从复制优缺点优点实现读写分离提升Redis整体并发吞吐量多从节点备份数据降低数据丢失风险是哨兵、集群架构的前置基础。缺点主从同步存在毫秒级延迟无法实现强一致性主节点故障后无法自动切换存在单点故障需配合哨兵实现高可用。五、Redis 哨兵机制与故障转移高可用核心哨兵Sentinel是Redis实现自动高可用、故障自愈的核心方案基于主从架构搭建不处理业务读写仅负责监控、通知、自动故障转移、配置维护彻底解决主节点单点故障问题。生产标配1主2从3哨兵架构。1、哨兵四大核心功能监控哨兵集群持续PING主、从节点实时检测节点存活状态消息通知节点异常时哨兵主动通知客户端与运维平台自动故障转移主节点下线后自动选举新主库、重构主从架构配置中心实时维护主节点地址客户端通过哨兵获取最新主库节点无感切换。2、节点下线判定规则面试重点1主观下线 SDOWN单个哨兵节点PING超时单方面判定主节点下线仅代表当前哨兵视角不触发故障转移。2客观下线 ODOWN超过半数哨兵判定主节点主观下线才会标记为客观下线确认主节点真正故障触发后续故障转移流程。该机制避免网络抖动导致的误判。3、哨兵Leader选举机制主节点客观下线后哨兵集群需要选出一个Leader哨兵全权负责故障转移选举规则所有哨兵参与投票同一周期单个哨兵仅能投一票得票超过半数的哨兵成为Leader选举失败则随机重试保证最终只有一个Leader执行故障转移。4、新主节点选举规则最优从库筛选Leader哨兵按照优先级依次筛选选出最优从节点升级为新主库排除已经下线、异常的从节点优先选择主从复制偏移量最大的从节点数据最完整、丢失最少偏移量一致时选择运行ID最小的从节点作为新主。5、完整故障转移流程故障判定半数哨兵确认主节点客观下线选举Leader哨兵集群投票选出唯一Leader节点选举新主Leader按照规则筛选最优从库发送SLAVEOF NO ONE使其升级为主节点重构主从Leader通知其他所有从节点挂载到新主节点完成数据同步旧主降级原故障主节点恢复后自动降级为从节点同步新主数据通知客户端哨兵推送新主库地址客户端无感切换业务恢复正常。6、哨兵机制优缺点优点实现主节点故障自动转移秒级自愈保证服务高可用集群监控、容错性强半数节点故障不影响整体服务客户端无感切换业务无感知、零停机。缺点仅解决高可用问题无法解决海量数据分片、扩容问题仍存在主从同步延迟不支持强一致性场景。六、面试满分总结话术可直接背诵RDB是全量二进制快照恢复快、体积小但存在批量数据丢失风险适合冷备份AOF是增量命令日志数据安全性高默认每秒刷盘最多丢1秒数据但恢复速度慢。混合持久化结合两者优势AOF文件前存RDB全量数据、后存增量日志兼顾恢复速度和数据安全是生产最优持久化方案。主从复制分为全量同步、增量同步依托复制积压缓冲区实现部分重同步实现读写分离和数据备份但存在同步延迟、主节点单点故障问题。哨兵机制基于主从架构通过集群监控、客观下线判定、哨兵Leader选举、最优从库升级实现主节点故障自动转移解决Redis单点故障实现高可用适合绝大多数中小规模高并发业务。

相关新闻

JavaScript数组神器:some()方法的高效应用指南
2026/6/13 23:34:23

JavaScript数组神器:some()方法的高效应用指南

目录 一、some()方法的核心概念 二、代码拆解与逻辑分析 三、与其他数组方法的对比 四、some() 方法的强大之处 总结 在前端开发中,我们经常需要对数组进行遍历和条件判断。传统的for循环虽然基础,但在处理复杂逻辑时往往显得冗长且不易阅读。今天&…

阅读更多
Seaborn热力图的刻度标签还能这么玩?从隐藏、反转到置顶的5个高级美化技巧
2026/6/12 11:32:57

Seaborn热力图的刻度标签还能这么玩?从隐藏、反转到置顶的5个高级美化技巧

Seaborn热力图的刻度标签还能这么玩?从隐藏、反转到置顶的5个高级美化技巧当你的数据可视化作品需要在学术会议、商业报告或在线平台中脱颖而出时,标准的Seaborn热力图配置往往显得千篇一律。真正让图表与众不同的秘密,往往藏在那些容易被忽略…

阅读更多
Arduino HC-SR04超声波测距:从原理到实战避坑指南
2026/6/13 22:29:12

Arduino HC-SR04超声波测距:从原理到实战避坑指南

1. 项目概述与核心思路超声波测距,听起来挺高大上,其实原理和我们小时候玩的山谷喊话听回声差不多。你对着山谷喊一声,听到回声的时间越长,说明山谷离你越远。HC-SR04这个传感器干的就是这个活儿,只不过它喊的是我们人…

阅读更多
如何深度定制iOS界面:解锁Misaka高级定制功能的完整指南
2026/6/13 22:57:30

如何深度定制iOS界面:解锁Misaka高级定制功能的完整指南

如何深度定制iOS界面:解锁Misaka高级定制功能的完整指南 【免费下载链接】misaka iOS & tvOS customisation tool for KFD & MDC 项目地址: https://gitcode.com/gh_mirrors/mis/misaka Misaka作为一款专为KFD和MDC打造的iOS与tvOS深度定制工具&…

阅读更多
i.MX23 LCDIF接口深度解析:四种工作模式、数据通路与实战避坑指南
2026/6/13 22:57:30

i.MX23 LCDIF接口深度解析:四种工作模式、数据通路与实战避坑指南

1. i.MX23 LCDIF:嵌入式显示系统的核心引擎 在嵌入式系统开发中,驱动一块LCD屏幕远不止是“点亮”那么简单。它涉及到处理器如何高效、稳定地将内存中的图像数据,按照屏幕严格要求的时序“搬运”到像素点上。i.MX23这颗经典的ARM9应用处理器&…

阅读更多
抖音无水印下载器完全指南:5分钟掌握批量下载技巧
2026/6/13 22:57:30

抖音无水印下载器完全指南:5分钟掌握批量下载技巧

抖音无水印下载器完全指南:5分钟掌握批量下载技巧 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. …

阅读更多
如何快速掌握F3D:5个技巧让你成为3D文件查看专家
2026/6/13 22:57:30

如何快速掌握F3D:5个技巧让你成为3D文件查看专家

如何快速掌握F3D:5个技巧让你成为3D文件查看专家 【免费下载链接】f3d Fast and minimalist 3D viewer. 项目地址: https://gitcode.com/GitHub_Trending/f3/f3d F3D是一款快速、轻量级的3D查看器,支持从数字内容到科学数据集的多种文件格式。无论…

阅读更多
Wwise音频文件终极指南:5步掌握游戏音频解包与替换技术
2026/6/13 22:57:30

Wwise音频文件终极指南:5步掌握游戏音频解包与替换技术

Wwise音频文件终极指南:5步掌握游戏音频解包与替换技术 【免费下载链接】wwiseutil Tools for unpacking and modifying Wwise SoundBank and File Package files. 项目地址: https://gitcode.com/gh_mirrors/ww/wwiseutil 你是否曾想修改游戏音效却无从下手…

阅读更多
2026终极指南:三步搞定JetBrains IDE试用期重置,告别30天限制烦恼
2026/6/13 21:57:30

2026终极指南:三步搞定JetBrains IDE试用期重置,告别30天限制烦恼

2026终极指南:三步搞定JetBrains IDE试用期重置,告别30天限制烦恼 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter 还记得那个令人焦虑的场景吗?深夜赶项目,代码写到…

阅读更多
JPEXS Free Flash Decompiler完整指南:免费SWF逆向工程实用教程
2026/6/12 9:49:36

JPEXS Free Flash Decompiler完整指南:免费SWF逆向工程实用教程

JPEXS Free Flash Decompiler完整指南:免费SWF逆向工程实用教程 【免费下载链接】jpexs-decompiler JPEXS Free Flash Decompiler 项目地址: https://gitcode.com/gh_mirrors/jp/jpexs-decompiler 你是否曾经遇到过需要修改一个Flash文件,却发现源…

阅读更多
抖音无水印视频下载器:终极技术实现与部署指南
2026/6/13 15:08:27

抖音无水印视频下载器:终极技术实现与部署指南

抖音无水印视频下载器:终极技术实现与部署指南 【免费下载链接】douyin_downloader 抖音短视频无水印下载 win编译版本下载:https://www.lanzous.com/i9za5od 项目地址: https://gitcode.com/gh_mirrors/dou/douyin_downloader 想要获取纯净的抖音…

阅读更多
工业级数据血缘分析:基于 Python 构建大规模图数据库关系拓扑与数据沿袭(Data Lineage)追踪算法
2026/6/13 11:19:35

工业级数据血缘分析:基于 Python 构建大规模图数据库关系拓扑与数据沿袭(Data Lineage)追踪算法

工业级数据血缘分析:基于 Python 构建大规模图数据库关系拓扑与数据沿袭(Data Lineage)追踪算法在企业级数据中台、大型分布式数据仓库(如 Hive、MaxCompute、ClickHouse)及数据治理体系的建设演进中,数据血…

阅读更多
终极指南:如何在macOS上轻松解密QQ音乐QMC格式文件
2026/6/13 0:57:15

终极指南:如何在macOS上轻松解密QQ音乐QMC格式文件

终极指南:如何在macOS上轻松解密QQ音乐QMC格式文件 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目录,默认转换…

阅读更多
从IEEE 754到Verilog:手把手搞定浮点数与整数的$rtoi/$itor/$realtobits转换(附代码示例)
2026/6/13 0:57:15

从IEEE 754到Verilog:手把手搞定浮点数与整数的$rtoi/$itor/$realtobits转换(附代码示例)

从IEEE 754到Verilog:深入解析浮点数与整数的系统级转换实践在FPGA和ASIC设计中,处理浮点数运算一直是个棘手的问题。Verilog作为一种硬件描述语言,原生支持整数和位向量操作,但对浮点数的直接支持有限。当我们需要在算法建模、测…

阅读更多
面试官连环问:从TCP序号绕回到窗口计算,这道‘古董题’到底在考察什么?
2026/6/13 0:57:15

面试官连环问:从TCP序号绕回到窗口计算,这道‘古董题’到底在考察什么?

TCP协议深度解析:从序号绕回到窗口计算的面试核心考点当面试官抛出"TCP序号用尽怎么办"这类问题时,他们期待的绝非教科书上的标准答案。这些看似陈旧的"古董题"背后,隐藏着对候选人协议设计思想、问题解决能力和工程实践…

阅读更多
GIT修改用户名
2026/6/13 10:50:23

GIT修改用户名

在GIT中修改用户名可按以下步骤操作: 查看当前git的用户名,使用命令git config --list或git config user.name。修改git用户名,使用命令git config --global user.name "xxx(新的用户名)",将其中…

阅读更多
Win11Debloat:让你的Windows系统重获新生的终极优化工具
2026/6/13 15:45:46

Win11Debloat:让你的Windows系统重获新生的终极优化工具

Win11Debloat:让你的Windows系统重获新生的终极优化工具 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and …

阅读更多
技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践
2026/6/13 11:10:35

技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践

技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter m4s-converter是一个…

阅读更多