日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Redis:15---键迁移(move、dump、restore、migrate)

發(fā)布時間:2023/12/13 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis:15---键迁移(move、dump、restore、migrate) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
  • 鍵遷移概述:

    • 鍵遷移就是把數(shù)據(jù)由一個Redis遷移到另一個Redis(例如從生產(chǎn)環(huán)境遷移到測試環(huán)境),或者在數(shù)據(jù)庫之間進(jìn)行遷移

    • 鍵遷移有三種方式:move、dump+restore、migrate

    • 下面是三種方式的比較,建議使用migrate:

一、move

move key db
  • 功能:將參數(shù)所指的key從當(dāng)前源數(shù)據(jù)庫遷移到指定的數(shù)據(jù)庫中

  • 這個命令是在單個Redis內(nèi)部進(jìn)行是用戶具有遷移

  • 這個命令在實際生產(chǎn)環(huán)境中不建議使用

演示案例

  • 0號數(shù)據(jù)庫有一個hello字符串鍵,1號數(shù)據(jù)庫為空,現(xiàn)在我們將0號數(shù)據(jù)庫的hello字符串鍵遷移到1號數(shù)據(jù)庫中

二、dump+restore

dump key restore key ttl value
  • 功能:這兩個命令的組合可以實現(xiàn)在不同的Redis數(shù)據(jù)庫實例之間進(jìn)行數(shù)據(jù)遷移

  • 整個遷移過程分為兩步:

    • 源Redis端執(zhí)行dump命令,將key鍵值序列化,格式采用的是RDB格式

    • 目標(biāo)Redis端執(zhí)行restore命令,將上面序列化的值進(jìn)行復(fù)原,其中ttl參數(shù)代表過期時間(如果為0代表沒有過期時間)

備注說明

  • 有兩點需要注意:

    • 第一,整個遷移過程并非原子性的,而是通過客戶端分步完成的

    • 第二,遷移過程是使用兩個客戶端連接傳輸,不是在源Redis和目標(biāo)Redis之間進(jìn)行傳輸

演示案例

  • 在源Redis上執(zhí)行dum:

  • 在目標(biāo)Redis上執(zhí)行restore:

三、migrate

  • migrate命令也是用于在Redis實例間進(jìn)行數(shù)據(jù)遷移的

  • 實際上migrate命令就是將dump、restore、del三個命令進(jìn)行組合,從而簡化了操作流程

  • migrate命令具有原子性,而且從Redis3.0.6版本以后已經(jīng)支持遷移多個鍵的功能,有效地提高了遷移效率,migrate在水平擴容(后面文章有介紹)中起到重要作用

遷移過程如下

  • 整個過程如下圖所示:

  • 實現(xiàn)過程和dump+restore基本類似,但是有3點不太相同:

    • 第一,整個過程是原子執(zhí)行的,不需要在多個Redis實例上開啟 客戶端的,只需要在源Redis上執(zhí)行migrate命令即可

    • 第二,migrate命令的數(shù)據(jù)傳輸直接在源Redis和目標(biāo)Redis上完成的

    • 第三,目標(biāo)Redis完成restore后會發(fā)送OK給源Redis,源Redis接收后會根據(jù)migrate對應(yīng)的選項來決定是否在源Redis上刪除對應(yīng)的鍵

命令格式

migrate host port key|"" destination-db timeout [copy] [replace] [keys key [key
  • 參數(shù)介紹如下:

    • host:目標(biāo)Redis的IP地址

    • port:目標(biāo)Redis的端口

    • key|"":在Redis3.0.6版本之前,migrate只支持遷移一個鍵,所以此處是要遷移的鍵,但Redis3.0.6版本之后支持遷移多個鍵,如果當(dāng)前需要遷移多個鍵,此處為空字符串""

    • destination-db:目標(biāo)Redis的數(shù)據(jù)庫索引,例如要遷移到0號數(shù)據(jù)庫,這里就寫0。

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

    • [copy]:如果添加此選項,遷移后并不刪除源鍵

    • [replace]:如果添加此選項,migrate不管目標(biāo)Redis是否存在該鍵都會 正常遷移進(jìn)行數(shù)據(jù)覆蓋

    • [keys key[key...]]:遷移多個鍵,例如要遷移key1、key2、key3,此處填 寫“keys key1 key2 key3”

演示案例①(單個鍵遷移)

  • 例如我們開啟兩個redis服務(wù)端實例,一個為127.0.0.1:6379,一個為127.0.0.1:6380

  • 情況1:源(127.0.0.1:6379)Redis有鍵hello,目標(biāo)(127.0.0.1:6380)Redis沒有,遷移成功

migrate 127.0.0.1 6380 hello 0 1000

  • 情況2:源Redis和目標(biāo)Redis都有鍵hello:

    • 如果migrate命令沒有加replace選項會收到錯誤提示(下面演示這種)

    • 如果加了replace會返回OK表明遷移成功(讀者自己演示)

migrate 127.0.0.1 6380 hello 0 1000

  • 情況3:源Redis沒有鍵hello,此種情況會收到nokey的提示

migrate 127.0.0.1 6380 hello 0 1000

演示案例②(多個鍵遷移)

  • 源Redis批量添加多個鍵

mset key1 value1 key2 value2 key3 value3

  • 源Redis執(zhí)行如下命令完成多個鍵的遷移

migrate 127.0.0.1 6380 "" 0 5000 keys key1 key2 key3

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的Redis:15---键迁移(move、dump、restore、migrate)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。