在某些使用場景中,咱們並不須要使用redis的持久化,反而須要發揮redis的內存數據庫特性,實現徹底內存運行,達到須要的高性能。java
Redis 自己支持持久化,經過在必定時間間隔或觸發操做,將內存中的數據同步到磁盤來保證持久化。Redis 支持兩種持久化方式,一種是 Snapshotting(快照),保存爲dump.rdb文件,也是默認方式,另外一種是 Append-only file(縮寫aof)的方式,保存爲 .aof 文件。redis
Snapshot 快照 經過save或者bgsave命令通知redis作一次快照持久化。save操做是在主線程中保存快照的,因爲redis是用一個主線程來處理全部客戶端的請求,這種方式會阻塞全部客戶端請求。因此不推薦使用。另外一點須要注意的是,每次快照持久化都是將內存數據完整寫入到磁盤一次,並非增量的只同步增量數據。若是數據量大的話,寫操做會比較多,必然會引發大量的磁盤IO操做,可能會嚴重影響性能。數據庫
在默認的快照 rdb保存方式中,redis.conf 裏面的配置以下app
save 900 1 #900秒內若是超過1 個key 被修改,則發起快照保存 save 300 10 #300秒內容如超過10個key 被修改,則發起快照保存 save 60 10000
若是咱們須要關閉快照,只須要將這幾行註釋了,而後重啓 redis 便可。函數
若是是正在運行的實例,可使用 redis-cli的命令性能
# 查看當前配置 config get save # 關閉快照 config set save ""
來在線更新配置,輸出OK表示設置成功。spa
AOF 比快照方式有更好的持久化性,是因爲在使用aof 持久化方式時, redis 會將每個收到的寫操作系統
命令都經過write函數追加到文件中(默認是appendonly.aof) 。當redis 重啓時會經過從新執行文件中線程
保存的寫命令來在內存中重建整個數據庫的內容日誌
默認配置以下:
appendonly yes //啓用日誌追加持久化方式 #appendfsync always //每次收到寫命令就當即強制寫入磁盤,最慢的,可是保證徹底的持久化,不推薦使用 appendfsync everysec //每秒鐘強制寫入磁盤一次,在性能和持久化方面作了很好的折中,推薦 #appendfsync no //徹底依賴操做系統,性能最好,持久化沒保證
咱們須要更新配置文件爲:
appendfsync no
在線更新配置使用
# 查看當前配置 config get appendfsync # 關閉快照 config set appendfsync no
經過這兩個配置,redis就能夠徹底在內存運行。
若是想手動進行持久化,可使用Redis的 bgsave 和 bgrewriteaof 來手動進行持久化。