Redis是支持持久化的內存數據庫,也就是說redis需要經常將內存中的數據同步到硬盤來保證持久化。redis持久化有兩種方式
3.2.1 snapshotting 快照(rdb)
默認方式,將內存中以快照的方式寫入到二進制文件中,默認爲dump.rdb,可以通過配置設置自動做快照持久化的方式。我們可以配置redis在n秒內如果m個key修改,就自動做快照。
snapshotting 設置:redis.conf(本文中的6379.conf)
save 900 1 #900秒內,超過1個key被修改,則發起快照保存
save 300 10 #300秒內,超過10個key被修改,則發起快照保存
save 60 10000 #60秒內,超過10000個key被修改,則發起快照保存
3.2.2 append-only file(aof)
類似於mysql日誌,由於快照方式是在一定時間間隔做一次,所以可能發生redis意外宕機的情況就會丟失最後一次快照後的所有被修改的數據,aof比快照方式有更好的持久化型,是由於redis在使用aof是,redis會將每一個收到的寫命令都通過write函數追加到命令中,在redis重新啓動時會重新執行文件中保存的寫命令在內存中重建這個數據庫的內容,這個文件在redis3.2/bin目錄下,appendonly.aof。aof不是立即寫到硬盤上,可以通過配置文件修改強制寫到硬盤中。
aof設置:redis.conf(本文中的6379.conf)
appendonly yes //啓動aof持久化 ,持久化有三種方式:
#appendfsync always //收到寫命令就立即寫入到磁盤,效率最慢,但是保證完整的持久化(最常用)
#appendfsync everysec //每秒寫一次硬盤,在性能和持久化方面做了很好的這種
#appendfsync no //完全依賴os,性能最好,持久化沒保證。
修改6379.conf appendonly yes 重啓redis 發現conf/目錄下多了一個appendonly.aof [root@localhost conf]# ll 總用量 52 -rw-r--r-- 1 root root 41421 10月 21 11:40 6379.conf -rw-r--r-- 1 root root 86 10月 21 11:42 appendonly.aof -rw-r--r-- 1 root root 41 10月 21 11:41 dump.rdb 執行set操作觀察appendonly.aof的內容。
提示:開啓aof後之前的rdb模式就時效了,且之前的數據會被清空。