2015-12-11 32 views
0

我使用Redis的,今天我開始得到以下異常:Redis的/新建.rdb文件,而Redis的仍在運行

Can't save in background: fork: Cannot allocate memory 

據我瞭解,因爲我的DB太大出現這個錯誤,這個過程沒有記憶。

所以我開始刪除表格,但問題在於,Redis不能成功將其寫入光盤,並且面對它不知道這種更改。

我決定創建新.rdb文件(/etc/redis.config),然後用新的RDB文件更改文件路徑:

dbfilename dump_cache_new.rdb 

然後,我將重新加載所有的數據,我的關鍵(我可以做到這一點 - 從我的文件系統獲取數據),並重新啓動redis服務。

的問題是,我不能創建這個文件,因爲Redis的現在與舊的路徑執行(和Redis的具有運行,因爲從其他進程需要一些關鍵數據)。

如何創建此dump_cache_new.rdb文件,而redis仍在使用舊路徑運行?

回答

0

如果你想上的Redis的運行實例更改快照文件名(或大多數其他配置參數),使用CONFIG SET命令。基於該文檔頁面,它看起來像dirdbfilename都是可以在實例上設置的參數。

另一種選擇是使用同步SAVE命令,其不需要叉子來考慮。

您幾乎從不想在生產環境中調用SAVE來阻止所有其他客戶端。通常使用BGSAVE。然而在防止Redis的創建背景節約孩子(在叉(2)系統調用的實例錯誤)問題的情況下,SAVE命令可以執行的最新數據集的轉儲良好的最後手段。

這是一個非常嚴格的操作,但是如果您已經在轉儲數據以進行保存工作,那麼您至少可以先製作快照。