最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解讀Redis的持久化方式(RDB、AOF)

 更新時間:2026年04月01日 10:44:07   作者:大手你不懂  
文章主要介紹了Redis的RDB和AOF兩種持久化機制的區(qū)別、工作原理和優(yōu)點,并詳細講解了Redis 4.0+版本中RDB+AOF混合持久化的實現(xiàn)方式、配置建議和實際應用,強調了混合持久化在生產環(huán)境中的重要性和配置要點,以及在不同場景下的推薦配置策略

一、核心概念回顧

RDB vs AOF 對比

特性RDB (快照)AOF (日志)
原理定時全量快照記錄每條寫命令
文件格式二進制 (.rdb)文本日志 (.aof)
文件大小
恢復速度快 (直接加載)慢 (重放命令)
數(shù)據完整性可能丟失快照間數(shù)據可做到秒級甚至實時
性能影響快照時 fork 子進程持續(xù)寫磁盤,有開銷

二、同時開啟 RDB+AOF 的工作機制

1. 寫入流程(雙寫機制)

┌─────────────────────────────────────────────────────────────────┐
│                    Redis 寫操作流程                              │
└─────────────────────────────────────────────────────────────────┘
?
        寫命令 (SET/DEL/HSET...)
                ↓
        ┌───────────────┐
        │   內存數(shù)據     │ ← 立即執(zhí)行
        └───────┬───────┘
                │
        ┌───────┴───────┐
        ↓               ↓
┌──────────────┐  ┌──────────────┐
│    RDB 快照   │  │    AOF 日志   │
│ (定時觸發(fā))    │  │  (實時追加)   │
│ .rdb 文件     │  │  .aof 文件    │
└──────────────┘  └──────────────┘

關鍵點

  • RDB:按配置的時間間隔觸發(fā)(如 900 秒有 1 次修改)

  • AOF:每條寫命令都記錄(根據 fsync 策略決定何時落盤)

2. 混合持久化(Redis 4.0+ 核心特性)

這是最重要的配置!Redis 4.0 引入了 AOF-RDB 混合持久化:

┌─────────────────────────────────────────────────────────────────┐
│                    混合持久化文件格式                            │
└─────────────────────────────────────────────────────────────────┘
?
appendonly.aof 文件結構:
┌─────────────────────────────────────────────────────────────────┐
│  頭部:RDB 格式快照數(shù)據 (全量數(shù)據)                               │
│  ─────────────────────────────────────────────────────────────  │
│  尾部:AOF 格式增量命令 (RDB 之后的寫操作)                        │
│  ─────────────────────────────────────────────────────────────  │
│  結尾:EOF 標記                                                  │
└─────────────────────────────────────────────────────────────────┘
?
優(yōu)勢:
? 恢復時先加載 RDB 快照(快)
? 再重放少量 AOF 增量命令(數(shù)據完整)
? 兼顧速度和完整性

配置項

# redis.conf
aof-use-rdb-preamble yes    # 開啟混合持久化(Redis 4.0+ 默認開啟)

3. AOF 重寫時的混合機制

AOF 文件會越來越大,需要定期重寫(Rewrite):

┌─────────────────────────────────────────────────────────────────┐
│                    AOF 重寫流程                                  │
└─────────────────────────────────────────────────────────────────┘
?
重寫前 appendonly.aof:
┌─────────────────────────────────────────────────────────────────┐
│ RDB 快照 │ SET k1 v1 │ SET k1 v2 │ DEL k1 │ SET k2 v2 │ ...     │
│ (舊數(shù)據) │ (重復命令很多,文件膨脹)                               │
└─────────────────────────────────────────────────────────────────┘
                          ↓ BGREWRITEAOF 觸發(fā)
重寫后 appendonly.aof:
┌─────────────────────────────────────────────────────────────────┐
│      RDB 快照 (當前最新數(shù)據)      │  SET k2 v2  │  (增量命令)    │
│      (緊湊二進制)                │  (少量新命令)                 │
└─────────────────────────────────────────────────────────────────┘
?
結果:
? 文件體積大幅減小
? 恢復速度更快
? 數(shù)據不丟失

三、重啟恢復優(yōu)先級

恢復順序規(guī)則

┌─────────────────────────────────────────────────────────────────┐
│                    Redis 重啟恢復流程                            │
└─────────────────────────────────────────────────────────────────┘
?
                    Redis 啟動
                        ↓
            ┌───────────────────────┐
            │  檢查持久化文件是否存在  │
            └───────────┬───────────┘
                        │
        ┌───────────────┼───────────────┐
        ↓               ↓               ↓
   ┌─────────┐    ┌─────────┐    ┌─────────┐
   │ AOF 存在 │    │ 僅 RDB  │    │ 都無    │
   └────┬────┘    └────┬────┘    └────┬────┘
        │              │              │
        ↓              ↓              ↓
   優(yōu)先用 AOF     用 RDB 恢復    空數(shù)據庫
   (數(shù)據更完整)   (快照數(shù)據)    (無歷史數(shù)據)
        │              │              │
        └──────────────┴──────────────┘
                       ↓
              ┌─────────────────┐
              │   恢復完成      │
              │   對外提供服務   │
              └─────────────────┘

核心原則

  • AOF 優(yōu)先級 > RDB 優(yōu)先級
  • 原因:AOF 數(shù)據通常比 RDB 更完整(丟失數(shù)據更少)

四、生產環(huán)境配置推薦

完整配置示例

# ==================== RDB 配置 ====================
dbfilename dump.rdb                    # RDB 文件名
dir /var/lib/redis                     # 數(shù)據目錄
?
# 快照觸發(fā)條件(滿足任一即觸發(fā))
save 900 1                             # 900 秒內至少 1 個 key 變化
save 300 10                            # 300 秒內至少 10 個 key 變化
save 60 10000                          # 60 秒內至少 10000 個 key 變化
?
stop-writes-on-bgsave-error yes        # RDB 失敗時停止寫入
rdbcompression yes                     # 壓縮 RDB 文件
rdbchecksum yes                        # 校驗和
?
# ==================== AOF 配置 ====================
appendonly yes                         # 開啟 AOF
appendfilename "appendonly.aof"        # AOF 文件名
?
# AOF 落盤策略(三選一)
appendfsync everysec                   # 推薦:每秒同步(性能與安全平衡)
# appendfsync always                   # 每次寫都同步(最安全,性能差)
# appendfsync no                       # 由系統(tǒng)決定(性能最好,可能丟數(shù)據)
?
no-appendfsync-on-rewrite no           # 重寫時是否禁用 fsync
auto-aof-rewrite-percentage 100        # AOF 增長 100% 時觸發(fā)重寫
auto-aof-rewrite-min-size 64mb         # AOF 最小 64MB 才觸發(fā)重寫
?
# ==================== 混合持久化 ====================
aof-use-rdb-preamble yes               # 開啟混合持久化(關鍵!)

五、兩種模式對比

模式一:傳統(tǒng)雙持久化(Redis 4.0 之前)

┌─────────────────────────────────────────────────────────────────┐
│                    傳統(tǒng)雙持久化                                  │
└─────────────────────────────────────────────────────────────────┘
?
文件結構:
┌─────────────────────┐    ┌─────────────────────────────────┐
│   dump.rdb          │    │   appendonly.aof                │
│   (獨立 RDB 文件)     │    │   (純 AOF 日志,無 RDB 前綴)      │
│   全量快照          │    │   所有寫命令                    │
└─────────────────────┘    └─────────────────────────────────┘
?
恢復時:
1. 優(yōu)先加載 AOF 文件
2. 逐條重放所有命令
3. RDB 文件僅作為備份
?
缺點:
? AOF 文件大
? 恢復慢
? 兩份文件獨立管理

模式二:混合持久化(Redis 4.0+ 推薦)

┌─────────────────────────────────────────────────────────────────┐
│                    混合持久化                                    │
└─────────────────────────────────────────────────────────────────┘
?
文件結構:
┌─────────────────────────────────────────────────────────────────┐
│   appendonly.aof (唯一持久化文件)                                │
│   ┌─────────────────┬───────────────────────────────────────┐   │
│   │   RDB 快照部分   │   AOF 增量命令部分                     │   │
│   │   (二進制格式)   │   (文本命令格式)                       │   │
│   │   基礎數(shù)據      │   RDB 之后的寫操作                     │   │
│   └─────────────────┴───────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────────┘
?
恢復時:
1. 加載 RDB 快照部分(快速)
2. 重放 AOF 增量命令(少量)
3. dump.rdb 文件不再使用
?
優(yōu)點:
? 恢復速度快
? 數(shù)據完整性高
? 文件管理簡單

六、實際場景演示

場景:Redis 重啟恢復

時間線:
T0: Redis 啟動,開啟 RDB+AOF 混合持久化
T1: 寫入 100 萬條數(shù)據
T2: 觸發(fā) RDB 快照 → dump.rdb 生成
T3: AOF 持續(xù)記錄寫命令
T4: AOF 重寫 → appendonly.aof 包含 RDB 快照 + 增量命令
T5: Redis 宕機
T6: Redis 重啟
?
恢復過程:
┌─────────────────────────────────────────────────────────────────┐
│  步驟 1: 檢測文件                                                │
│  - 發(fā)現(xiàn) appendonly.aof 存在                                     │
│  - 發(fā)現(xiàn) dump.rdb 存在(但不用)                                  │
├─────────────────────────────────────────────────────────────────┤
│  步驟 2: 加載 AOF 文件                                           │
│  - 讀取 RDB 前綴部分 → 恢復 100 萬條基礎數(shù)據 (約 2 秒)               │
│  - 重放 AOF 增量命令 → 恢復 T4-T5 期間的寫操作 (約 0.5 秒)          │
├─────────────────────────────────────────────────────────────────┤
│  步驟 3: 恢復完成                                                │
│  - 總耗時約 2.5 秒                                               │
│  - 數(shù)據丟失:僅 T5 時刻未 fsync 的少量數(shù)據                        │
└─────────────────────────────────────────────────────────────────┘
?
對比純 RDB 恢復:
- 恢復時間:約 2 秒
- 數(shù)據丟失:T2-T5 期間所有寫操作(可能幾小時數(shù)據)
?
對比純 AOF 恢復:
- 恢復時間:約 30 秒+(重放所有命令)
- 數(shù)據丟失:僅 T5 時刻未 fsync 的少量數(shù)據

七、最佳實踐總結

場景推薦配置理由
生產環(huán)境RDB+AOF 混合持久化性能與安全最佳平衡
高寫入場景appendfsync everysec每秒同步,性能影響小
金融級數(shù)據appendfsync always不丟數(shù)據,接受性能損失
純緩存場景可關閉持久化追求極致性能
Redis 版本4.0+支持混合持久化

監(jiān)控建議

# 檢查持久化狀態(tài)
redis-cli INFO persistence
?
# 關鍵指標:
# - rdb_last_bgsave_status: RDB 最后保存狀態(tài)
# - aof_enabled: AOF 是否開啟
# - aof_last_rewrite_time_sec: AOF 最后重寫耗時
# - aof_current_size: AOF 當前文件大小

八、總結

問題答案
RDB 和 AOF 能同時開嗎?可以,且生產環(huán)境推薦同時開啟
恢復時優(yōu)先用哪個?AOF 優(yōu)先級更高(數(shù)據更完整)
混合持久化是什么?AOF 文件頭部存 RDB 快照,尾部存增量命令
需要配置什么?aof-use-rdb-preamble yes(4.0+ 默認開啟)
最佳實踐?Redis 4.0+ 使用混合持久化 + appendfsync everysec
Redis 4.0+ 有幾個持久化文件?兩個:dump.rdb + appendonly.aof
Redis 4.0+  appendonly.aof 內容是什么?RDB 快照前綴 + AOF 增量命令
Redis 4.0+  dump.rdb 還會生成嗎?會,只要 save 配置生效
Redis 4.0+   dump.rdb 有什么用?備份、降級兼容、手動恢復
Redis 4.0+   能刪除 dump.rdb 嗎?可以,但不推薦(失去備份)
Redis 4.0+   如何只保留一個文件?配置 save "" 禁用 RDB(不推薦)
Redis 版本持久化模式dump.rdbappendonly.aof恢復時使用哪個
4.0 之前僅 RDB? 存在? 不存在RDB
4.0 之前僅 AOF? 不存在? 存在AOF
4.0 之前RDB+AOF? 存在? 存在AOF(優(yōu)先)
4.0+混合持久化? 存在? 存在AOF(含 RDB 前綴)

核心要點

  • Redis 4.0+ 的混合持久化是生產環(huán)境的標準配置,它巧妙地將 RDB 的快速恢復和 AOF 的數(shù)據完整性結合起來,通過單一的 AOF 文件同時存儲快照和增量日志,實現(xiàn)了性能和安全的最優(yōu)平衡。
  • Redis 4.0+ 混合持久化后,dump.rdb 和 appendonly.aof 兩個文件都會存在。dump.rdb 雖然恢復時不用,但仍然作為獨立備份存在,提供降級兼容和冷備能力。appendonly.aof 才是真正用于恢復的主文件(包含 RDB 快照 + 增量命令)。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Redis如何統(tǒng)計用戶訪問量

    Redis如何統(tǒng)計用戶訪問量

    這篇文章主要介紹了Redis如何統(tǒng)計用戶訪問量問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Redis 鍵空間事件通知的具體使用

    Redis 鍵空間事件通知的具體使用

    本文系統(tǒng)解析Redis鍵空間通知機制,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-11-11
  • 使用redis實現(xiàn)附近的人功能

    使用redis實現(xiàn)附近的人功能

    這篇文章主要介紹了使用redis實現(xiàn)附近的人,實現(xiàn)諸如附近的人這類依賴于地理位置信息的功能,本文通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2021-09-09
  • Centos 7 如何安裝Redis(推薦)

    Centos 7 如何安裝Redis(推薦)

    這篇文章主要介紹了Centos 7 如何安裝Redis,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • Redis中的String類型及使用Redis解決訂單秒殺超賣問題

    Redis中的String類型及使用Redis解決訂單秒殺超賣問題

    這篇文章主要介紹了Redis中的String類型及使用Redis解決訂單秒殺超賣問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • Redis高并發(fā)緩存設計問題與性能優(yōu)化

    Redis高并發(fā)緩存設計問題與性能優(yōu)化

    本文詳細介紹了Redis緩存設計中常見的問題及解決方案,包括緩存穿透、緩存失效(擊穿)、緩存雪崩、熱點緩存key重建優(yōu)化、緩存與數(shù)據庫雙寫不一致以及開發(fā)規(guī)范與性能優(yōu)化,感興趣的可以了解一下
    2024-11-11
  • windows平臺安裝部署Redis

    windows平臺安裝部署Redis

    Redis是一個開源、跨平臺的數(shù)據庫,因此Redis數(shù)據庫可以運行在Windows、Linux、Mac OS和BSD等多個平臺上,本文主要介紹了windows平臺安裝部署Redis,具有一定的參考價值,感興趣的可以了解一下
    2023-10-10
  • redis 解決key的亂碼問題,并清理詳解

    redis 解決key的亂碼問題,并清理詳解

    這篇文章主要介紹了redis 解決key的亂碼問題,并清理詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • redis如何實現(xiàn)清空緩存

    redis如何實現(xiàn)清空緩存

    這篇文章主要介紹了redis如何實現(xiàn)清空緩存,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Redis實現(xiàn)延遲任務的常見方案詳解

    Redis實現(xiàn)延遲任務的常見方案詳解

    延遲任務(Delayed?Task)是指在未來的某個時間點,執(zhí)行相應的任務,本文為大家整理了Redis實現(xiàn)延遲任務的幾個常見方案,希望對大家有所幫助
    2024-04-04

最新評論

商丘市| 保康县| 平阴县| 宕昌县| 清涧县| 陇南市| 锡林浩特市| 兴山县| 蒙城县| 新兴县| 祁连县| 临城县| 民乐县| 深泽县| 临潭县| 黑龙江省| 菏泽市| 金昌市| 琼海市| 彰化县| 长沙县| 皋兰县| 鄂托克前旗| 东至县| 商水县| 成安县| 昌宁县| 宜良县| 清新县| 安福县| 信阳市| 偃师市| 远安县| 巨野县| 中牟县| 淮安市| 乃东县| 泸州市| 林口县| 敦煌市| 正蓝旗|