1. 傳統 AOF vs AOF-RDB 混合方式的差異

AOF(Append-Only File) 是 Redis 的持久性(persistence) 方式之一,將數據變更記錄到文件中,以便在發生故障時能夠恢復數據。
👉 如果需要 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 混合方式的運作原理

  1. 初始狀態保存 → Redis 在保存 AOF 時,首先生成 RDB 快照,並將其保存到 appendonly.aof.X.base.rdb 文件中。
  2. 隨後變更保存 → 隨後的所有變更記錄到 appendonly.aof.X.incr.aof 文件中。
  3. 數據恢復時 → 當 Redis 重啟時,首先加載 RDB 然後反映 AOF 差異以恢復到最新狀態。

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 差異文件 (隨後的變更保存)
-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 AOF vs Hybrid Comparison

🚀 結論:Redis 7.0 以上預設使用 AOF-RDB 混合方式,因此不會生成 appendonly.aof 單一文件。


4. 傳統 AOF vs AOF-RDB 混合方式比較

比較項目 傳統 AOF (appendonly.aof) AOF-RDB 混合 (appendonly.aof.X.base.rdb)
文件結構 一個 appendonly.aof 文件 RDB + AOF 混合結構
記錄方式 按順序保存所有命令 保存 RDB 快照 + AOF 差異
性能 隨時間變慢 更快且做了優化
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 設定未應用,混合方式可能無法正常運作
  • 在金融、事務系統等極需數據可靠性的場合,傳統 AOF 方式可能更有優勢

🚀 在大多數運行環境中,AOF-RDB 混合方式比傳統 AOF 方式更加高效,因此建議繼續使用。