redis migrate 遷移資料

2021-10-06 09:36:21 字數 845 閱讀 8880

從源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...