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 。