导航:首页 > 程序命令 > 生成迁移数据命令

生成迁移数据命令

发布时间: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

阅读全文

与生成迁移数据命令相关的资料

热点内容
算法分析与设计二手 浏览:979
学编程如何配电脑 浏览:966
怎么看特征找卡密的加密方式 浏览:522
方舟非官方服务器怎么赚钱 浏览:512
明日之后服务器无效是怎么回事 浏览:263
蛋壳公寓app如何查水电表 浏览:715
ad20库中的51单片机怎么找 浏览:618
阿里云服务器有点卡吗 浏览:215
苹果7如何让app后台运行 浏览:170
耐克app预售产品哪里看 浏览:209
补全算法一年级 浏览:131
evd数据调校软件加密 浏览:442
app听课与微信如何设置分屏 浏览:911
加密的excel怎么撤销 浏览:43
java动态数组初始化 浏览:978
编译后程序块过大不适合 浏览:675
李煜pdf 浏览:847
python写游戏逻辑 浏览:489
pdf转换成word免费版在线转换 浏览:464
荒废了三年还能做程序员吗 浏览:658