Redis鍵資料遷移的三種方式

2021-09-28 21:47:48 字數 2568 閱讀 6577

在使用redis的過程中,很多時候我們會遇到需要進行鍵遷移的問題,需要將指定redis中的指定資料遷移到其他redis當中,鍵遷移有三種方法,我們來進行一一介紹。

move key db

move命令由於在redis內部進行資料遷移,redis內部可以有多個資料庫,彼此在資料上相互隔離,move key db就是把指定的鍵從源資料庫移動到目標資料庫當中,但是不建議在生產環境中使用。

dump key

restore key ttl value

1.在源redis上,dump命令會將鍵值序列化,格式採用rdb格式。

2.在目標redis上,restore命令將上面序列化的值進行復原,其中ttl引數表示過期時間,ttl=0代表永不過期。

需要注意的是:

一、整個遷移過程並非原子性的,而是通過客戶端分部完成的。

二、遷移過程是開啟了兩個客戶端連線,所以dump得結果不是在源redis和目標redis之間進行傳輸。

127.0.0.1:6379> set key1 federico

ok127.0.0.1:6379> dump key1

"\x00\bfederico\x06\x00l\x88\xd4\xb3u/y\xae"

在redis-source上設定乙個新的鍵值,將此鍵值進行序列化。

127.0.0.1:6380> get key1

(nil)

127.0.0.1:6380> restore key1 0 "\x00\bfederico\x06\x00l\x88\xd4\xb3u/y\xae"

ok127.0.0.1:6380> get key1

"federico"

在redis-target上檢視當前可以不存在後,將序列化後的key進行復原

migrate用於在redis例項間進行資料遷移,實際上migrate命令是將dumprestoredel三個命令進行組合,從而簡化了操作流程。migrate命令具有原子性,從redis 3.0.6版本後已經支援遷移多個鍵的功能。migrate命令的資料傳輸直接在源redis和目標redis上完成,目標redis完成restore後會傳送ok給源redis。

migrate引數:

port:目標redis的埠

key|"":redis 3.0.6 後如果需要遷移多個鍵,此處為空字串""

destination-db:目標redis的資料庫索引

timeout:遷移的超時時間(單位為毫秒)

copy:如果新增此選項後,遷移後不刪除源鍵。

replace:如果新增此選項migrate不管目標redis是否存在該鍵都會正常遷移進行資料覆蓋

keys:如果要刪除多個建,填寫keys key1 key2 key3

127.0.0.1:6379> set key1 federico

ok127.0.0.1:6379> set key2 sunshine

ok127.0.0.1:6379> keys *

1) "key1"

2) "key2"

127.0.0.1:6379> migrate 127.0.0.1 6380 key1 0 1000

ok127.0.0.1:6379> keys *

1) "key2"

127.0.0.1:6380> keys *

1) "key1"

127.0.0.1:6380> get key1

"federico"

從源redis上看到,我們設定了兩個鍵,執行預設引數遷移後只有了乙個鍵。而在目標redis上已經成功遷移過去了這個鍵。如果想同時保留源redis上的資料,可以加上我們上面提到過的引數。

127.0.0.1:6379> keys *

1) "key2"

127.0.0.1:6379> migrate 127.0.0.1 6380 key2 0 1000 copy

ok127.0.0.1:6379> keys *

1) "key2"

127.0.0.1:6380> keys *

1) "key1"

2) "key2"

127.0.0.1:6380> get key2

"sunshine"

這樣我們就將redis鍵遷移的基本操作進行完了。

move、dump+restore、migrate三個命令的比較

命令作用域

原子性支援多個鍵

move

redis例項內部是否

dump+restore

redis例項之間否是

migrate

redis例項之間是是

redis三種啟動方式

tar zxvf redis 2.8.9.tar.gz cd redis 2.8.9 直接make 編譯 make 可使用root使用者執行 make install 將可執行檔案拷貝到 usr local bin目錄下。這樣就可以直接敲名字執行程式了。make install 啟動 加上 號使re...

redis三種連線方式

tar zxvf redis 2.8.9.tar.gz cd redis 2.8.9 直接make 編譯 make 可使用root使用者執行 make install 將可執行檔案拷貝到 usr local bin目錄下。這樣就可以直接敲名字執行程式了。make install 加上 號使redis...

redis三種啟動方式

tar zxvf redis 2.8.9.tar.gz cd redis 2.8.9 直接make 編譯 make 可使用root使用者執行 make install 將可執行檔案拷貝到 usr local bin目錄下。這樣就可以直接敲名字執行程式了。make install 啟動 加上 號使re...