redis中AOF和RDB的關閉方法
問題:當往redis中導入數據時,有時會出現redis server went away的狀況;html
緣由:redis
-
導入的數據量太大,而內存不夠(即內存1G,但數據有2G)。此時的redis服務須要重啓。數據庫
-
多是同一時間導入的數據太多,致使數據持久化的操做出問題,此時須要關閉rdb跟aof。app
*關閉rdb的命令:config set save ""spa
(或者進入配置文件將:server
Save 900 1 htm
Save 300 10 blog
Save 60 10000 進程
註釋掉,並打開save "" 的註釋,使得 save "" 生效,便可關閉rdb;內存
)
*關閉aof的命令:config set appendfsync no
(或者進入配置文件,將appendonly設置爲no,默認是 appendonly no )
(注:appendfsync 是同步機制,默認爲appendfsync everysec)---每秒同步一次寫操做到aof文件中;
該兩種設置查詢是否已修改爲功,可分別經過config get save, config get appendfsync命令來查看。
注意:該命令都是經過執行redis-cli後方可執行。
-
RDB 將數據庫的快照(snapshot)以二進制的方式保存到磁盤中。
-
AOF 則以協議文本的方式,將全部對數據庫進行過寫入的命令(及其參數)記錄到 AOF 文件,以此達到記錄數據庫狀態的目的。
重要知識點:
rewrite是aof的一個機制,用來壓縮aof文件,經過fork一個子進程,從新寫一個新的aof文件,該次重寫不是讀取舊的aof文件進行復制,而是將讀取內存中的redis數據庫,重寫一份aof文件,有點相似於rdb的快照方式;
觸發機制爲:
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
解釋:當rof文件的大小,比舊aof文件大百分之百的時候(2倍),且aof文件的大小大於64mb的時候,觸發重寫機制;