1. 传统 AOF 与 AOF-RDB 混合方式的区别
AOF(Append-Only File)是 Redis 的持久化方式之一,通过将数据更改记录到文件中,以便在发生故障时恢复数据。
👉 如果需要详细了解 AOF 的概念,建议首先查看之前的帖子
Redis AOF Rewrite:性能优化与数据保留 。
本文将重点分析传统 AOF 方式与 Redis 7.0 以上引入的 AOF-RDB 混合方式的区别。
2. Redis 7.0 及以上:引入 AOF-RDB 混合方式
为了解决传统 AOF 方式的磁盘使用效率低和恢复速度慢的问题,Redis 7.0 及以上版本采用了AOF-RDB 混合方式。
这种方式将RDB 快照与 AOF 结合,能够以更优化的方式保存数据。
✅ AOF-RDB 混合方式的工作原理
- 保存初始状态 → Redis 在保存 AOF 时,首先生成 RDB 快照并保存到
appendonly.aof.X.base.rdb
文件。 - 保存后续更改 → 随后的所有更改将记录到
appendonly.aof.X.incr.aof
文件中。 - 数据恢复时 → 当 Redis 重新启动时,首先加载 RDB,然后反映 AOF delta,以恢复到最新状态。
3. AOF-RDB 混合方式的文件结构
📌 与传统的单一 appendonly.aof 文件方式不同,Redis 7.0 生成以下文件。
sudo ls -l /var/lib/redis/appendonlydir
-rw-rw---- 1 redis redis 1146587 Feb 19 12:37 appendonly.aof.2.base.rdb # RDB 快照文件
-rw-r----- 1 redis redis 41279742 Feb 19 20:05 appendonly.aof.2.incr.aof # AOF delta 文件(保存后续更改)
-rw-r----- 1 redis redis 88 Feb 19 12:37 appendonly.aof.manifest # AOF 相关元数据管理文件
appendonly.aof.X.base.rdb
→ 保存当前 Redis 内存状态的RDB 快照文件appendonly.aof.X.incr.aof
→ 记录后续更改的 AOF 文件appendonly.aof.manifest
→ 管理 AOF 文件列表的元数据文件
🚀 结论:在 Redis 7.0 及以上版本中,由于 AOF-RDB 混合方式是默认设置,因此不会生成单一的 appendonly.aof 文件。
4. 传统 AOF 与 AOF-RDB 混合方式比较
比较项目 | 传统 AOF (appendonly.aof) | AOF-RDB 混合 (appendonly.aof.X.base.rdb) |
---|---|---|
文件结构 | 一个 appendonly.aof 文件 | RDB + AOF 混合结构 |
记录方式 | 按顺序保存所有命令 | 保存 RDB 快照 + AOF delta |
性能 | 随着时间推移变慢 | 更快且优化 |
Redis 重新启动时恢复速度 | 慢(执行所有命令) | 快(先加载 RDB 然后反映 AOF) |
存储空间 | 大小持续增加 | 基于 RDB 进行优化 |
磁盘 I/O 负担 | 由于保存所有命令而增加负担 | 因基于 RDB 而减轻负担 |
📌 结论:
- 传统 AOF 方式虽然数据可靠性高,但存在性能和磁盘使用量的问题。
- AOF-RDB 混合方式的优势在于快速恢复、高效的存储空间使用和较低的磁盘 I/O 负担。
- 在大多数操作环境中,推荐使用 AOF-RDB 混合方式。 🚀
5. 使用 AOF-RDB 混合方式时是否需要 RDB 设置?
👉 是的,需要 RDB 相关设置!
在 AOF-RDB 混合方式中,由于 RDB 是基础,因此必须在 redis.conf
中正确应用 RDB 相关设置。
✅ AOF-RDB 混合方式中需检查的设置
appendonly yes # 启用 AOF
aof-use-rdb-preamble yes # 启用 AOF-RDB 混合模式(默认值)
save 900 1 300 10 60 10000 # RDB 快照生成周期
🚨 如果没有 RDB 设置,AOF-RDB 混合方式可能无法正常工作!
将 aof-use-rdb-preamble
设置为 no
将应用传统的 aof
单一文件方式。
6. 结论:在实际工作中选择 Redis AOF 方式的方法
- 在 Redis 7.0 及以上版本中,默认推荐使用 AOF-RDB 混合方式
- 相较于传统 AOF 方式,具有更快的恢复速度、较少的存储空间使用和更低的磁盘 I/O 负担
- 如果没有应用 RDB 设置,Hybrid 方式可能无法正常工作
- 在金融、交易系统等对数据可靠性有极高要求的情况下,传统 AOF 方式可能更有利
🚀 在大多数操作环境中,AOF-RDB 混合方式相比传统 AOF 方式更高效,因此应继续使用。
目前没有评论。