導航:首頁 > 程序命令 > 生成遷移數據命令

生成遷移數據命令

發布時間:2024-03-11 21:33:46

Ⅰ 【Redis】Redis Cluster-集群數據遷移

Redis通過對KEY計算hash,將KEY映射到slot,集群中每個節點負責一部分slot的方式管理數據,slot最大個數為16384。
在集群節點對應的結構體變數clusterNode中可以看到slots數組,數組的大小為CLUSTER_SLOTS除以8,CLUSTER_SLOTS的值是16384:

clusterState

clusterNode裡面保存了節點相關的信息,集群數據遷移信息並未保存在clusterNode中,而是使用了clusterState結構體來保存:

clusterState與clusterNode的關系

在手動進行數據遷移時,需要執行以下步驟:

在進行數據遷移之前,首先在需要遷入的目標節點使用 SETSLOT 命令標記要將SLOT從哪個節點遷入到當前節點:

然後在源節點也就是slot所在節點使用 MIGRATING 命令標記將數據遷出到哪個節點:

比如slot1當前在node1中,需要將slot1遷出到node2,那麼首先在nodd2上執行 IMPORTING 命令,標記slot准備從node1遷到當前節點node2中:

然後在node1中執行 MIGRATING 命令標記slot1需要遷移到node2:

clusterCommand
SETSLOT 命令的處理在clusterCommand函數(cluster.c文件中)中:

在標記完遷入、遷出節點後,就可以使用 CLUSTER GETKEYSINSLOT 命令獲取待遷出的KEY:

<slot>:哈希槽的值

<count>:遷出KEY的數量

getkeysinslot 命令的處理也在clusterCommand函數中,處理邏輯如下:

完成上兩步之後,接下來需要在源節點中執行 MIGRATE 命令進行數據遷移, MIGRATE 既支持單個KEY的遷移,也支持多個KEY的遷移,語法如下:

migrateCommand

MIGRATE 命令對應的處理函數在migrateCommand中(cluster.c文件中),處理邏輯如下:

createDumpPayload

createDumpPayload函數在cluster.c文件中:

restoreCommand

目標節點收到遷移的數據的處理邏輯在restoreCommand中(cluster.c文件中):

數據遷移的最後一步, 需要使用 CLUSTER SETSLOT 命令,在源節點和目標節點執行以下命令,標記slot最終所屬的節點,並清除第一步中標記的遷移信息

<slot>:哈希槽

<node>:哈希槽最終所在節點id

clusterCommand

CLUSTER SETSLOT <slot> NODE <node> 命令的處理依舊在 clusterCommand 函數中,處理邏輯如下:

總結

參考

極客時間 - Redis源碼剖析與實戰(蔣德鈞)

Redis版本:redis-6.2.5

閱讀全文

與生成遷移數據命令相關的資料

熱點內容
如何創新我的世界伺服器 瀏覽:881
戰地怎麼看伺服器地址 瀏覽:348
vue怎麼打包放上伺服器 瀏覽:165
為什麼安卓服夏日活動沒有兔子頭 瀏覽:894
pubg為什麼顯示伺服器連接失敗 瀏覽:650
阿里雲掃碼登錄伺服器 瀏覽:970
化學基礎pdf 瀏覽:896
51單片機晶碼管 瀏覽:281
怎麼查伺服器假死原因日誌在哪看 瀏覽:277
掃描pdf文件 瀏覽:926
解壓密碼百度雲在線解壓 瀏覽:767
傳播學演算法推薦 瀏覽:749
我的世界網路游戲如何查找伺服器 瀏覽:257
安卓和蘋果通訊錄怎麼互傳 瀏覽:203
怎麼打開隱私與應用加密的菜單 瀏覽:416
我的世界伺服器小游戲的地址大全 瀏覽:578
在網路安全中加密安全機制提供了數據的 瀏覽:249
南京前端程序員私活怎麼收費 瀏覽:981
拓撲pdf 瀏覽:440
如何在工行app查我的訂單 瀏覽:214