redis中AOF和RDB的關閉方法
問題:當往redis中導入數據時,有時會出現redis server went away的情況;
原因:
-
導入的數據量太大,而內存不夠(即內存1G,但數據有2G)。此時的redis服務需要重啟。
-
可能是同一時間導入的數據太多,導致數據持久化的操作出問題,此時需要關閉rdb跟aof。
*關閉rdb的命令:config set save ""
(或者進入配置文件將:
Save 900 1
Save 300 10
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的時候,觸發重寫機制;