有沒有將Redis密鑰從一個數據庫移動到另一個數據庫的命令,還是隻有通過lua腳本纔有可能?Redis將所有密鑰從一個數據庫移動到另一個
已經有這種類型的問題被問得很好redis move all keys但對於像我這樣的初學者來說,答案並不合適和令人信服。
有沒有將Redis密鑰從一個數據庫移動到另一個數據庫的命令,還是隻有通過lua腳本纔有可能?Redis將所有密鑰從一個數據庫移動到另一個
已經有這種類型的問題被問得很好redis move all keys但對於像我這樣的初學者來說,答案並不合適和令人信服。
你可以使用「MOVE」將一個密鑰移動到另一個redis數據庫;
下面的文本是從redis.io
MOVE密鑰DB從當前選擇的數據庫
移動鍵(參見SELECT)到指定的目標數據庫。如果密鑰已經存在於目標數據庫中,或者它不存在於源數據庫中,則它不執行任何操作。因此,可以將MOVE用作鎖定原語。
返回值
整數應答,特別是:
我認爲這將做的工作:
redis-cli keys '*' | xargs -I % redis-cli move % 1 > /dev/null
(1爲新的數據庫數量,並重定向到/ dev/null是爲了避免讓數以百萬計的「1」線 - 自它會通過一個移動的關鍵之一,每次)
返回1要注意的是Redis的可能會用完的連接,然後將顯示噸這樣的錯誤:
無法連接至R edis at 127.0.0.1:6379:無法分配請求的地址
因此,轉儲數據庫然後將其導入新數據庫可能會更好(也更快)。
移動命令只移動一個鍵,如果我想移動一組鍵,該怎麼辦? –
@aarish我沒有一些好的建議。我想你可以使用** KEYS **和** MOVE **用腳本來完成它。 – freedoo
您可以執行MULTI/EXEC塊,以便一次緩衝並執行所有命令。 –