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