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

生成遷移數據命令

發布時間: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

閱讀全文

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

熱點內容
世界史綱pdf 瀏覽:129
湖北社保年審app叫什麼名字 瀏覽:848
邁達克雲伺服器 瀏覽:595
mfc深入淺出從mfc設計到mfc編程 瀏覽:79
螢石雲伺服器連接設置 瀏覽:323
中國名著pdf 瀏覽:590
華為伺服器設備序列號怎麼看 瀏覽:319
跑永輝生活配送用什麼app 瀏覽:147
ug識別符號命令在哪裡 瀏覽:719
pdf文件改文字 瀏覽:732
查詢qq號劍靈伺服器地址 瀏覽:552
國家反詐中心app為什麼要刷臉 瀏覽:303
iphone怎麼修改dns伺服器地址 瀏覽:85
bandizip解壓位置 瀏覽:168
伺服器的防火牆如何訪問 瀏覽:306
javagoto關鍵字 瀏覽:847
廣州少兒編程加盟排名榜 瀏覽:122
51單片機th0 瀏覽:292
冠軍交易pdf 瀏覽:208
excelword轉換成pdf 瀏覽:389