有時候我們想將乙個redis的資料遷移到另乙個redis中,redis提供了三種方式來滿足資料遷移的需求,分別是move、dump+restore、migrate
redis支援多資料庫,多資料庫之間彼此在資料上是隔離的。move key db就是把指定的鍵從源資料庫遷移到目標資料庫中。由於多資料庫在生產環境中不建議使用,所以此命令很少使用到。
命令: 源redis: dump key
目標redis:restore keyttl value 其中ttl代表過期時間,單位:毫秒。0代表不過期
實現原理:
dump+restore可以實現redis不同例項之間的資料遷移。
(1) 在源redis上,dump命令會將鍵值序列化,格式採用rdb格式。
(2) 在目標redis上,restore命令會將上面序列化的值進行復原,其中ttl代表過期時間,如果ttl為0,則表示沒有過期時間
注意事項:
(1) 整個遷移過程並非原子性的,而是通過客戶端分布完成的。
(2) 遷移過程是開啟了兩個例項的redis客戶端,將源redis序列化後的值放到目標redis例項客戶端進行操作,並不是在源redis和目標redis之間進行傳輸
migrate命令具有原子性,只需要在源redis例項上執行migrate命令即可。migrate的命令傳輸直接在源redis和目標redis例項之間進行。
命令:migrate host port key |』』 destination-db timeout [copy] [replace][keyskey[key…]]
port:目標redis的埠號
key|』』』』:在redis3.06版本之前,migrate只支援遷移乙個鍵,所以此處是要遷移的鍵。
redis3.06版本之後支援遷移多個鍵,如果遷移多個鍵則此處填寫空字串』』』』
destination-db:目標資料庫索引,例如要遷移到0號資料庫,這裡就寫0
timeout:遷移的超時時間(單位毫秒)
[copy]:新增此選項後遷移後並不刪除源鍵
[replace]:新增此選項後,不管目標redis是否存在該鍵,都會正常遷移進行資料覆蓋
[keys key[key…]]:遷移多個鍵,例如要遷移k1k2 k3,此處填寫keys key1 key2 key3,當所有的key在源例項上不存在時返回nokey
例如:migrate 10.3.34.101 6378 010000 copy keys mi aa
將mi aa兩個元素遷移到10.3.34.101 6378例項的0號資料庫上,源例項mi aa兩個鍵仍然保留。
Redis資料遷移教程
將src redis上的三個key x,y,z 的全部內容,遷移到dst redis 10.20.30.40 1 登入src redis的cli 2 執行命令 migrate 10.20.30.40 6379 0 5000 copy keys x y z命令說明 10.20.30.40 目的redi...
Redis鍵資料遷移的三種方式
在使用redis的過程中,很多時候我們會遇到需要進行鍵遷移的問題,需要將指定redis中的指定資料遷移到其他redis當中,鍵遷移有三種方法,我們來進行一一介紹。move key db move命令由於在redis內部進行資料遷移,redis內部可以有多個資料庫,彼此在資料上相互隔離,move ke...
redis資料庫遷移
某大佬說,我們要把一部機器的redis遷移到另外一部機器上面。現已存在兩部機器的redis環境及狀態是啟動,還有本地用rdm連線著兩部機器的connection。開啟rdm,右擊redis資料庫,選擇console開啟redis命令控制台,輸入命令 config get dir輸出 1 dir 2 ...