Redis是一個支持可持久化的內存數據庫,也就是說Redis能夠將數據保存到硬盤當中。redis
目前Redis支持兩種持久化方式:數據庫
1. snapshotting 快照方式(默認方式)。緩存
2. append-only file (縮寫AOF)的方式。app
區別:快照方式是將數據存到文件裏面,AOF是將 INSERT,UPDATE,DELETE操做存到文件裏面。函數
快照持久化性能
快照持久化是redis默認的持久化方式。這種方式是將內存中數據以快照的方式寫入二進制文件中,默認的文件名爲dump.rdb。redis提供了快照持久化的設置方式。spa
打開 redis.conf 文件:內存
save 900 1 表示900秒內若是超過1個key被修改,則發起快照保存it
save 300 10 表示300秒內若是超過10個key被修改,則發起快照保存配置
save 60 10000 表示60秒內若是超過10000 個key被修改,則發起快照保存
弊端: 快照方式是在必定間隔時間作一次,因此若是Redis意外掛掉的話,就會丟失最後一次快照後的全部修改。
AOF持久化
AOF比快照方式有更好的持久化性,是因爲在使用AOF時,redis會將每個收到寫命令都經過write函數追加到文件中,當redis重啓時會經過從新執行文件中保存的寫命令來重建整個數據庫內容。
固然因爲os會在內核中緩存write作的修改,因此可能不是當即寫到磁盤上。這樣aof方式的持久化仍然仍是可能會丟失部分修改。
咱們能夠經過配置文件告訴redis咱們想要經過fsync函數強制os寫入到硬盤的時機。
步驟:
1. 修改 redis.conf 文件中 appendonly 項,設置爲 appendonly no
2. 配置 appendfsync 項(三選一)
appendfsync always (收到命令就當即寫入磁盤,最慢,可是保證最徹底的持久化) appendfsync everysec (每秒鐘寫入磁盤一次,在性能和持久化方面作了最好的折中) appendfsync no (徹底依賴os,性能最好,持久化方面沒保證)