Redis持久化機制 RDB和AOF的區別

  一、簡單介紹 

  Redis中的持久化機制是一種當資料庫發生宕機、斷電、軟體崩潰等,資料庫中的數據無法再使用或者被破壞的情況下,如何恢複數據的方法。

  Redis中共有兩種持久化機制

    RDB(Redis DataBase)

    AOF(Append Only File)

       二、什麼是RDB

  • RDB在指定的時間間隔內將記憶體中的全部數據集快照寫入磁碟(如果原先存在RDB文件的話,新的RDB文件會覆蓋掉就得RDB文件),也就是Snapshot快照,它恢復時是將快照文件直接讀到記憶體里,便可直接恢複數據。

  三、什麼是AOF

  • AOF持久化方式記錄每次對伺服器寫的操作,當伺服器重啟的時候會重新執行這些命令來恢復原始的數據,AOF命令以redis協議追加保存每次寫的操作到文件末尾
  • Redis還能對AOF文件進行後台重寫,使得AOF文件的體積不至於過大。(假如AOF文件中記錄了set  name  a , set name b set name c, 那麼對於最終結果而言這三條指令和set name c的效果是相同的,從結果上來看,我們只知道 name 是 c,因此只需要記錄將這三條寫命令重寫為一條set name c 就可以了 )

  四、AOF和RDB對比

 

     

  一般來說, 如果想達到足以媲美 PostgreSQL 的數據安全性, 應該同時使用兩種持久化功能。

  如果你非常關心你的數據, 但仍然可以承受數分鐘以內的數據丟失, 那麼你可以只使用 RDB 持久化。

  有很多用戶都只使用 AOF 持久化, 但並不推薦這種方式: 因為定時生成 RDB 快照(snapshot)非常便於進行資料庫備份, 並且 RDB 恢複數據集的速度也要比 AOF 恢復的速度要快, 除此之外, 使用 RDB 還可以避免之前提到的 AOF 程式的 bug 。

 

Tags: