1. 程式人生 > >Redis持久化方式

Redis持久化方式

很好 conf 一個 文件名 重新 sna 條件 有一個 一次

Snapsotting(快照)方式

snapsotting是默認方式,(把數據做一個備份,將數據存儲在文件)

這種方式將內存中數據照快照方式寫到二進制文件中.默認的文件名為“dump.rdb”。可以通過配置(“redis.conf”)設置自動做快照持久化的方式,可以配置redis在n秒內如果超過m個key鍵修改就自動做快照

Save 900 1     
Save 300 10     
Save  60 1000  

上面含義是900秒後有一個key鍵發生修改就執行Save。300秒後有10個key發生修改就執行Save。60秒後有1000個key發生修改就執行Save。

數據快照的缺點是持久化之後如果出現系統宕機就會丟失一段數據。

Append-only file(aof)方式

由於快照方式在一定間隔時間做一次Save,所以如果出現系統宕機情況下,就會丟失最後一次快照後的所有修改。aof方式有更好的持久化性,由於是在使用aof,redis會將每一次收到的寫命令都通過whle函數追加到文件中,當redis重啟時會通過重新執行文件中保存的寫命令在內存中從建整個數據庫內容。開啟aof日誌記錄,需要在配置(“redis.conf”)文件中進行如下配置

appendonly yes

Appendonly配置不開啟,可能在會斷電時導致一段時間的數據丟失,因為Redis本身同步數據配置時是按Save條件同步,所有有的數據會在一段時間內只存在內存中

Appendfsync:no/always/everysec

no:表示等操作系統進行數據緩存同步到磁盤,性能最好,持久化沒有保障

always:表示每次更新操作後手動調用fsync()將數據寫到磁盤,每次收到寫命令就立即強制寫入磁盤,性能最差,但是保障完全的持久化

Everysec:表示每秒同步一次,每秒鐘強制寫入磁盤一次。在性能和持久化方面做了很好的折中

數據恢復

當Redis服務器掛掉以後,重啟時按照以下優先級恢復數據到內存

  1. 如果只配置了AOF,重啟時加載AOF文件恢復數據
  2. 如果同時配置了RDB和AOF,啟動時只加載AOF文件恢復數據
  3. 如果只配置了RDB ,啟動時將加載dump文件恢復數據

Redis持久化方式