news 2026/4/28 1:05:33

Redis 的 RDB 与 AOF:持久化机制全解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Redis 的 RDB 与 AOF:持久化机制全解析

文章目录

    • 1. 引言:Redis 是内存数据库,数据会丢吗?
    • 2. RDB:定期快照式持久化
      • 2.1 什么是 RDB
      • 2.2 RDB 的触发方式
        • 自动触发(配置)
        • 手动触发
      • 2.3 RDB 的工作原理
      • 2.4 RDB 的优点
      • 2.5 RDB 的缺点
    • 3. AOF:追加日志式持久化
      • 3.1 什么是 AOF
      • 3.2 AOF 的开启方式
      • 3.3 AOF 写入策略(fsync)
      • 3.4 AOF 重写(Rewrite)
      • 3.5 AOF 的优点
      • 3.6 AOF 的缺点
    • 4. RDB vs AOF:核心对比
    • 5. 同时开启 RDB + AOF
    • 6. 生产环境配置建议
      • 通用建议
    • 7. 一个常见误区
    • 8. 总结
    • 参考

1. 引言:Redis 是内存数据库,数据会丢吗?

Redis 被称为“内存数据库”,很多初学者都会有疑问:

Redis 重启后,数据还在吗?

答案是:
👉取决于你是否开启了持久化,以及使用哪种方式。

Redis 提供了两种核心持久化机制:

  • RDB(Redis DataBase)快照
  • AOF(Append Only File)日志

它们分别从性能数据安全两个方向解决问题。


2. RDB:定期快照式持久化

2.1 什么是 RDB

RDB 的核心思想是:

在某一时刻,把 Redis 内存中的数据完整地保存为一个快照文件。

生成的文件通常是:

dump.rdb

2.2 RDB 的触发方式

RDB 可以通过多种方式触发:

自动触发(配置)
save 900 1 save 300 10 save 60 10000

含义:

  • 900 秒内有 1 次写 → 生成快照
  • 300 秒内有 10 次写
  • 60 秒内有 10000 次写

手动触发
SAVE# 阻塞BGSAVE# 后台(推荐)

2.3 RDB 的工作原理

  1. Redis 主进程fork子进程
  2. 子进程将内存数据写入.rdb文件
  3. 主进程继续处理请求(COW 机制)


2.4 RDB 的优点

  • 文件紧凑,体积小
  • 恢复速度快
  • 对 Redis 性能影响较小
  • 适合备份、迁移

2.5 RDB 的缺点

  • 可能丢失最近一段时间的数据
  • 大数据量下 fork 有开销
  • 不适合高频数据变更场景

3. AOF:追加日志式持久化

3.1 什么是 AOF

AOF 的核心思想是:

把每一次写命令,按顺序追加到日志文件中。

文件通常是:

appendonly.aof

AOF 持久化功能的实现可以简单分为 5 步:

  1. 命令追加(append):所有的写命令会追加到 AOF 缓冲区中。
  2. 文件写入(write):将 AOF 缓冲区的数据写入到 AOF 文件中。注意!!!此时并没有同步到磁盘。
  3. 文件同步(fsync)<font style="color:rgb(60, 60, 67);">fsync</font>将阻塞直到写入磁盘完成后返回,保证了数据持久化。
  4. 文件重写(rewrite):随着 AOF 文件越来越大,需要定期对 AOF 文件进行重写,达到压缩的目的。
  5. 重启加载(load):当 Redis 重启时,可以加载 AOF 文件进行数据恢复。


3.2 AOF 的开启方式

appendonly yes

3.3 AOF 写入策略(fsync)

appendfsync always appendfsync everysec appendfsync no
策略数据安全性能
always最安全最慢
everysec较安全推荐
no风险高最快

3.4 AOF 重写(Rewrite)

随着时间推移,AOF 会越来越大,因此 Redis 提供AOF 重写机制

用最少的命令,重建当前数据状态。

触发方式:

  • 自动(配置)
  • 手动:BGREWRITEAOF

3.5 AOF 的优点

  • 数据安全性高
  • 丢失数据少
  • 可读性好(文本命令)

3.6 AOF 的缺点

  • 文件体积大
  • 恢复速度慢
  • 写入频繁,对磁盘依赖高

4. RDB vs AOF:核心对比

维度RDBAOF
持久化方式快照日志
数据安全较低较高
性能影响较大
文件体积
恢复速度
适用场景备份高可靠

5. 同时开启 RDB + AOF

Redis支持两者同时开启

save ... appendonly yes

启动时:

  • 优先使用AOF 恢复数据
  • RDB 作为备份手段

👉这是生产环境的推荐方案。


6. 生产环境配置建议

通用建议

  • AOF 使用everysec
  • 开启 RDB 作为兜底
  • 合理配置重写阈值
auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb

7. 一个常见误区

AOF 一定比 RDB 安全。

实际上:

  • appendfsync no风险很高
  • 任何机制都存在极端丢失场景

8. 总结

Redis 的持久化,本质是性能与数据安全的权衡

  • RDB:快照,快、轻,但可能丢数据
  • AOF:日志,安全,但慢、占空间

参考

Redis持久化机制详解

文中图片来自《Redis开发与运维》

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/21 2:29:08

2026年最新版恒星播放器下载安装全攻略:多格式支持与性能优化详解

一、前言 在多媒体播放领域&#xff0c;恒星播放器因其兼容性强、播放性能稳定、界面简洁等特点&#xff0c;逐渐成为用户在Windows端的热门选择。许多用户在搜索“恒星播放器下载安装”时&#xff0c;往往只找到零散的教程或过时版本。本文将从下载安装方法、功能讲解到系统优…

作者头像 李华
网站建设 2026/4/25 12:44:05

【Flutter × OpenHarmony】跨端开发实现全局Toast提示卡片

文章目录 【Flutter OpenHarmony】跨端开发实现全局Toast提示卡片前言背景Flutter OpenHarmony 跨端开发介绍开发核心代码&#xff08;详细解析&#xff09;1. Toast示例卡片 Widget代码解析&#xff1a; 2. 全局Toast实现方法核心解析&#xff1a; 心得总结 【Flutter Open…

作者头像 李华
网站建设 2026/4/27 9:10:02

断网、断电,不断数据——LoongCollector 极限边缘场景可靠采集方案

作者&#xff1a;林润骑(太业) 背景 在云计算和物联网快速发展的今天&#xff0c;越来越多的业务场景将计算和数据采集能力推向了边缘侧。从智能制造的产线设备、新能源汽车的车载系统&#xff0c;到遍布各地的零售终端和智能家居设备&#xff0c;这些终端设备产生的可观测数据…

作者头像 李华
网站建设 2026/4/23 10:50:28

CSS 简介

CSS 简介 引言 层叠样式表(Cascading Style Sheets,简称CSS)是用于描述HTML或XML文档样式的样式表语言。它是一种用于网页设计的样式表语言,与HTML语言紧密相关,但独立于HTML。CSS能够将HTML文档的结构与表现分离,使得网页设计更加灵活和高效。 CSS 的起源与发展 CSS…

作者头像 李华
网站建设 2026/4/26 2:43:37

【Java开发】办公通讯软件端到端消息分发与提示技术深度解析

【精选优质专栏推荐】 《AI 技术前沿》 —— 紧跟 AI 最新趋势与应用《网络安全新手快速入门(附漏洞挖掘案例)》 —— 零基础安全入门必看《BurpSuite 入门教程(附实战图文)》 —— 渗透测试必备工具详解《网安渗透工具使用教程(全)》 —— 一站式工具手册《CTF 新手入门实战教…

作者头像 李华
网站建设 2026/4/27 19:35:09

基于深度学习YOLOv12的红细胞、白细胞和血小板检测系统(YOLOv12+YOLO数据集+UI界面+登录注册界面+Python项目源码+模型)

一、项目介绍 本项目开发了一个基于YOLOv12深度学习算法的智能血细胞检测系统&#xff0c;能够自动识别和分类血液样本中的红细胞(RBC)、白细胞(WBC)和血小板(Platelets)。系统采用包含874张标注图像的专业数据集&#xff08;训练集765张、验证集73张、测试集36张&#xff09;…

作者头像 李华