一、Redis同一實例的數據庫之間遷移數據
命令: 源REDIS:move key db
此命令用於把指定的鍵從源數據庫遷移到目標數據庫中
將key爲某的數據遷移到數據庫1
二、Redis不同實例之間的數據遷移
命令: 源REDIS:dump key
目標REDIS:restore key ttl value 其中ttl代表過期時間,單位:毫秒。0代表不過期
實現原理:
dump+restore可以實現redis不同實例之間的數據遷移。
(1) 在源Redis上,dump命令會將鍵值序列化,格式採用RDB格式。
(2) 在目標Redis上,restore命令會將上面序列化的值進行復原,其中ttl代表過期時間,如果ttl爲0,則表示沒有過期時間
注意事項:
(1) 整個遷移過程並非原子性的,而是通過客戶端分佈完成的。
(2) 遷移過程是開啓了兩個實例的redis客戶端,將源REDIS序列化後的值放到目標REDIS實例客戶端進行操作,並不是在源Redis和目標Redis之間進行傳輸
三、Redis批量數據遷移(僅限3.06之後版本)
命令:migrate host port key |’’ destination-db timeout [copy] [replace][keyskey[key…]]
選項:host:目標redis的IP地址
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 '' 0 10000 copy keys mi aa
將mi aa兩個元素遷移到10.3.34.101 6378實例的0號數據庫上,源實例mi aa兩個鍵仍然保留。