redis--RDB AOF

一、RDB(Redis Database Backup file,数据快照)

1. 核心概念

把 Redis 某一时刻内存全部数据生成二进制快照文件存入磁盘;故障重启时加载快照恢复数据。

2. 两条核心命令

  1. save:主进程直接执行,全程阻塞 Redis,大数据量慎用。
  2. bgsave:fork 子进程后台生成 RDB,不阻塞主进程,生产常用。

fork:复制进程页表,使用写时复制(Copy On Write)

  • 读操作:父子进程共享同一块物理内存
  • 主进程写数据:先拷贝这份内存页面,在新副本上修改,不影响子进程正在持久化的数据

3. 自动触发配置(redis.conf)

复制代码
save 900 1    # 900s内至少1个key修改,触发bgsave
save 300 10   # 300s内至少10个key修改,触发bgsave
save 60 10000 # 60s内至少10000个key修改,触发bgsave
# save ""  代表关闭RDB持久化

rdbcompression yes # 是否开启RDB文件压缩(默认开启,消耗CPU)
dbfilename dump.rdb # RDB文件名
dir ./  # 文件存放目录

4. RDB 优缺点

✅ 优点:

  • 二进制文件,体积小,恢复速度快
  • 适合冷备份、全量迁移 ❌ 缺点:
  • 快照是间隔生成的,两次快照之间宕机会丢失这段时间所有数据
  • fork 子进程时,如果数据量巨大,会产生内存开销

二、AOF(Append Only File,追加日志文件)

1. 核心概念

记录每一条写命令 (读命令不记录),以追加的方式写入日志;重启时重新执行 AOF 里所有命令恢复数据。默认关闭,appendonly yes开启。

2. 刷盘策略 appendfsync

表格

配置 刷盘时机 优点 缺点
always 每条写命令立刻同步刷盘 可靠性最高,几乎不丢数据 性能最差
everysec(默认) 先放缓冲区,每秒刷盘 性能均衡 宕机最多丢失 1 秒数据
no 交给操作系统自动刷盘 性能最好 不可控,可能丢大量数据

3. AOF 重写 bgrewriteaof

问题:同一个 key 多次修改,AOF 会保存多条命令,文件持续膨胀,比如

复制代码
set num 123
set name jack
set num 666

重写后,直接合并成最少命令,结果等价:

复制代码
mset name jack num 666
  • 手动触发:bgrewriteaof,后台子进程重写,不阻塞主进程

  • 自动重写配置:

    auto-aof-rewrite-percentage 100 # 文件相比上次重写后增长100%触发
    auto-aof-rewrite-min-size 64mb # 文件最小达到64MB才触发重写

重写不是读取旧 AOF 文件,是读取当前内存数据直接生成最简命令。

4. AOF 优缺点

✅ 优点:

  • 数据安全性更高,默认最多丢 1s 数据
  • 日志可读,可人为修改修复 ❌ 缺点:
  • 文件体积通常远大于 RDB
  • 数据恢复时需要回放所有命令,恢复速度比 RDB 慢

三、RDB vs AOF 对比(面试高频)

表格

对比项 RDB AOF
保存内容 某一刻内存数据快照(二进制) 每条写命令日志
丢失数据 两次快照间全部丢失 默认最多丢失 1 秒
文件大小 更小 更大
恢复速度 快 慢
阻塞 save 阻塞;bgsave 仅 fork 瞬间短暂阻塞 重写时 fork 短暂阻塞,主流程基本不阻塞
优先级 Redis 重启时,优先加载 AOF(数据更完整) 优先级更高
相关推荐
数据工匠老o1 小时前
"能用应用层解决的不用存储过程",十年数据库经验总结
数据库·架构
AC赳赳老秦1 小时前
公开音频转写信息提取:OpenClaw 处理发布会与听证会文本并提取核心决策信息
大数据·开发语言·汇编·数据库·人工智能·deepseek·openclaw
老纪的技术唠嗑局2 小时前
异步索引特性解析:OceanBase 如何提升持续写入场景下的索引检索性能
数据库
老纪的技术唠嗑局2 小时前
Tibo 谈 Codex:harness 总比模型快一步
数据库·人工智能
猫咪宝妖2 小时前
信息安全工程师 第四级 结构化保护级
网络·数据库·安全
Andreapiki2 小时前
风险审计校招技术栈拆解:SQL、Python、Power BI在2026届JD中的真实权重
数据库·python·sql
nvd113 小时前
从存算一体到现代湖仓:对标传统关系型数据库透视 Bucket + Iceberg + Trino 的物理本质
数据库·bigdata
夕除3 小时前
redis--UV
redis
JosieBook3 小时前
【数据库】MySQL 实战精通系列 · 第8篇:慢查询治理与性能优化实战
数据库·mysql·性能优化