redis持久化機制

redis是一個支持持久化的內存數據庫,也就是說redis需要經常將內存中的數據同步到硬盤來保證持久化。
redis支持兩種持久化方式:
1、snapshotting(快照)也是默認方式。將數據存儲下來。
2、Append-only file(所以aof)的方式。將增刪改等操作儲存下來。


snapshotting(快照)方式:
快照是默認的持久化方式。這種方式是將內存中數據以快照的方式寫入到二進制文件中,默認的文件爲dump.rdb。可以通過配置設置自動做快照持久化的方式。我們可以配置redis在n秒內如果超過m個key被修改就自動做快照。


例:
save 900 1  #900秒內如果超過1個key被修改,則發起快照保存。
save 300 10 #300秒內如果超過10個key被就修改,則發起快照保存。




aof方式:
由於快照方式是在一定間隔時間做一次的,所以如果redis意外down掉的話,就會丟失最後一次快照後的所有修改。
aof比快照方式有更好的持久化性,是由於在使用aof時,redis會將每一個收到的寫命令都通過write函數追加到文件中,檔redis重啓時會通過重新執行文件中保存的寫命令在內存中重建這個數據庫的內容。
當然由於os會在內核中緩存write做的修改,所以可能不是立即寫到磁盤上。這樣aof方式的持久化也還是有可能會丟失修改。
可以通過配置文件告訴redis我們想要通過fsync函數強制os寫入到磁盤的時機。
appendonly yes       //啓用aof持久化方式


# appendfsync always //收到寫命令就理解寫入磁盤,最慢,但是保證完全的持久化
appendfsync everysec //每秒鐘寫入磁盤一次,在性能和持久化方面做了很好的折中
# appendfsync no     //完全依賴os,性能最好,持久化沒保證
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章