redis全內存運行

在某些使用場景中,咱們並不須要使用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 來手動進行持久化。

相關文章
相關標籤/搜索