Redis之持久化

stonebox1122發表於2017-08-11
redis是一個支援持久化的記憶體資料庫,也就是說redis需要經常將記憶體中的資料同步到硬碟來保證持久化。redis支援兩種持久化方式:
1、snapshotting(快照)也是預設方式。將記憶體中的資料以快照的方式寫入到檔案。預設的檔名是dump.rdb。
[root@D2-LZY245 redis-4.0.1]# grep ^save redis.conf
save 900 1
save 300 10
save 60 10000

2、append-only file(aof)的方式。由於快照方式是在一定間隔時間做一次,所以如果redis意外down掉的話,就會丟失最後一次快照後的所有修改。aof比快照方式有更好的永續性,是由於在使用aof時,redis會將每一個收到的寫命令都透過write函式追加到檔案中,當redis重啟時會透過重新執行檔案中儲存的寫命令來在記憶體中重建整個資料庫的內容。
由於os會在核心中快取write做的修改,所有可能不是立即寫到磁碟上。這樣aof方式的持久化也還是有可能會丟失部分修改。可以透過配置檔案告訴redis想要透過fsync函式強制OS寫入到磁碟的時機。
# The name of the append only file (default: "appendonly.aof")
appendfilename "appendonly.aof"
# always: fsync after every write to the append only log. Slow, Safest.
# appendfsync always
appendfsync everysec
# appendfsync no

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28536251/viewspace-2143384/,如需轉載,請註明出處,否則將追究法律責任。

相關文章