從源redis例項原子的傳送乙個key到目標例項。成功後,刪除源例項中的key,在目標例項中生成。如果目標例項中已經存在將要傳送的鍵,會報鍵已存在錯誤。
命令的格式為:
migrate host port key|"" destination-db timeout keys key1 key2.
具體的例子:
migrate 192.168.1.34 6379 「」 0 5000 keys key1 key2 key3
host,目標例項主機名。
port,目標例項埠號
key,要傳送的鍵,可以為空字串"",此時傳送的鍵有keys命令生成。
destination-db,目標資料庫
timeout,超時時間。
keys,使用多值模式。
在3.2版以後,migrate命令可以在一次呼叫時傳輸多個命令,通過管道技術實現。使用這種模式需要將傳送的key設定成"",並且使用redis 的keys命令選擇將要傳送的鍵。
migrate命令在內部使用了dump命令將鍵序列化,並且在目標資料庫中呼叫restore。源redis例項作為目標例項的乙個客戶端。如果目標例項呼叫restore成功後,返回ok,則源例項將使用del命令刪除鍵。
migrate命令需要進行io操作,並且遵守超時時間限制。當在傳送資料過程**現io錯誤,或者timeout時間到了,這個操作將會中止,並且返回ioerr。此時,可能會出現兩種情況:
(1)傳送的鍵出現在兩個例項上。
(2)鍵只存在於源例項上。
當超時發生時,鍵不可能丟失,但應該對傳送的鍵進行檢查,檢視鍵是否已經出現在目標例項中。
如果沒有鍵被傳送,則會返回nokey。nokey不是乙個錯誤。
遷移資料方案
我們在做系統的時候,有時候會遇到遷移資料或者處理任務 任務量又比較大 比如把redis的資料取出來做一些操作,然後處理完的資料在存到hbase 我們需要考慮到資料處理過程中失敗情況,需要處理高併發去執行,具體怎麼設計,怎麼做呢,有一種簡單的方式如下 1我們先把任務資料存到redis任務佇列裡 2定義...
oracle遷移資料
往本地oracle的 user使用者遷移資料,生成遷移日誌 imp user user 127.0.0.1 orcl file f user 20191203.dmp statistics none fromuser user touser user log d user.log建立使用者 user...
mysql 遷移資料
一 匯出匯入所有資料庫的資料 1.匯出 mysqldump u root p123456 all databases all.sql 2.匯入 mysql u root p123456 all.sql 二 匯出匯入指定資料庫的資料 1.匯出 mysqldump u root p123456 test...