5.4. 数据迁移
当槽x从Node A向Node B迁移时,Node A和Node B都会有这个槽x,Node A上槽x的状态设置为MIGRATING,Node B上槽x的状态被设置为IMPORTING。

MIGRATING状态:
1、如果key存在则成功处理。
2、如果key不存在,则返回客户端ASK,客户端根据ASK首先发送ASKING命令到目标节点,然后发送请求的命令到目标节点
3、当key包含多个命令
a)如果都存在则成功处理 b)如果都不存在,则返回客户端ASK c)如果一部分存在,则返回客户端TRYAGAIN,通知客户端稍后重试,这样当所有的key都迁移完毕的时候客户端重试请求的时候回得到ASK,然后经过一次重定向就可以获取这批键4、此时不刷新客户端中node的映射关系。
IMPORTING状态
1、如果key不在该节点上,会被MOVED重定向,刷新客户端中node的映射关系
2、如果是ASKING命令则命令会被执行,key不在迁移的节点已经被迁移到目标的节点
3、Key不存在则新建
5.4.1. 读写请求
槽里面的key1还未迁移,并且槽属于迁移中。假如key1属于槽x,并且key1还在Node MPORTING。

本文深入探讨Redis Cluster的数据迁移过程,重点讲解在MIGRATING和IMPORTING状态下的处理策略。在MIGRATING状态,当key不存在时,客户端会收到ASK请求,需先发送ASKING命令到目标节点再执行。而在IMPORTING状态,若key不在节点上,将通过MOVED重定向。文中还详细阐述了读写请求、MOVED请求和ASK请求的情况。
最低0.47元/天 解锁文章
1445

被折叠的 条评论
为什么被折叠?



