Redis RDB 持久化全量快照详解
RDB(Redis Database)是 Redis 的持久化方式之一,通过创建内存数据的全量快照来实现持久化。

核心原理
RDB 将某一时刻的 Redis 内存数据完整地保存到一个二进制文件中(默认 dump.rdb),相当于给内存数据拍了张"照片"。
触发方式
手动触发
# SAVE - 同步方式,会阻塞 Redis 服务器 redis> SAVE # BGSAVE - 异步方式,fork子进程后台处理(推荐) redis> BGSAVE
自动触发(配置)
# 在 redis.conf 中配置 save 规则 save 900 1 # 900秒内至少有1个key变化 save 300 10 # 300秒内至少有10个key变化 save 60 10000 # 60秒内至少有10000个key变化
其他触发场景
- 主从复制时,主节点自动生成 RDB 文件
- 执行
SHUTDOWN命令 - 执行
FLUSHALL命令(生成空快照)
RDB 文件结构
+-------------------+
| "REDIS" (5字节) | ← 魔数标识
+-------------------+
| RDB版本号 (4字节) |
+-------------------+
| 辅助字段 | ← redis版本、创建时间等
+-------------------+
| 数据库数据 | ← 实际数据(键值对)
| - DB编号 |
| - 哈希表大小 |
| - 过期时间 |
| - 键(字符串) |
| - 值(编码) |
+-------------------+
| EOF (1字节) | ← 结束标记
+-------------------+
| 校验和 (8字节) | ← CRC64校验
+-------------------+
执行流程(BGSAVE)
客户端发送 BGSAVE 命令
2. Redis 主进程检查:
- 是否已有子进程在执行 BGSAVE
- 是否已有子进程在执行 AOF 重写
3. 主进程 fork() 子进程
├── 主进程:继续处理客户端请求(使用写时复制技术)
└── 子进程:将内存数据写入临时 RDB 文件
4. 子进程完成写入后:
- 用临时文件替换旧的 RDB 文件(原子操作)
- 向父进程发送信号通知完成
5. 父进程更新统计信息
写时复制机制
- fork 时:父子进程共享内存页
- 数据修改时:被修改的内存页会复制一份给子进程
- 优势:即使使用子进程,内存消耗也只是被修改的数据量,而非整个数据集
优缺点分析
优点 ✅
- 紧凑高效:RDB 文件是二进制压缩的,比 AOF 文件小
- 恢复快速:加载 RDB 文件比 AOF 重放快得多
- 性能较好:fork 子进程处理,主进程几乎不受影响
- 适合备份:可以定期保存 RDB 文件作为历史快照
缺点 ❌
- 存在数据丢失风险:最近一次快照后的数据可能丢失
- fork 开销:数据量大时 fork 会耗时间(取决于内存大小)
- 无法实时持久化:快照生成有时间间隔
配置优化建议
# 保存触发条件 save 900 1 save 300 10 save 60 10000 # RDB 文件压缩(默认 yes,建议开启) rdbcompression yes # 是否检查 RDB 文件校验和(默认 yes) rdbchecksum yes # RDB 文件名 dbfilename dump.rdb # RDB 文件保存目录 dir /data/redis/ # 当磁盘错误时是否停止写入(推荐 yes) stop-writes-on-bgsave-error yes
恢复数据
- 自动恢复:启动 Redis 时自动加载
- 加载顺序:优先 AOF(若同时开启),RDB 作为备选
- 手动恢复:复制 RDB 文件到配置目录,重启 Redis
监控与诊断
# 查看持久化状态 redis> INFO Persistence # 关键字段解读: - rdb_last_save_time: 最后成功保存时间戳 - rdb_bgsave_in_progress: 是否正在执行 BGSAVE - rdb_last_bgsave_status: 最后一次 BGSAVE 状态 - rdb_current_bgsave_time_sec: 当前 BGSAVE 已执行秒数
最佳实践
- 混合持化方案:RDB + AOF 组合使用
- 备份策略:定期将 RDB 文件备份到远程存储
- 内存监控:fork 时内存可能翻倍,需预留足够内存
- 延迟设置:根据业务容忍度调整 save 触发条件
- 版本兼容:低版本 Redis 无法加载高版本 RDB 文件
RDB 适合对数据完整性要求不高但追求恢复速度的场景,比如缓存数据、可以容忍少量数据丢失的业务系统。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播