redis集群的重新分片与ASK命令

举报
周杰伦本人 发表于 2022/06/26 14:06:31 2022/06/26
【摘要】 redis集群的重新分片与ASK命令 切片原理 ASK命令 ASK命令和MOVED命令的区别 总结 ❤️ 感谢大家 redis集群的重新分片与ASK命令redis的重新切片是将时隙位从一个节点分配到另一个节点,还传输时隙所在的键值对。 切片原理redis群集的分片由redis-trib管理。首先,向目标节点发送import命令,当目标节点准备导入属于此插槽的密钥-值对时,发送migrati...

redis集群的重新分片与ASK命令

redis的重新切片是将时隙位从一个节点分配到另一个节点,还传输时隙所在的键值对。

切片原理

redis群集的分片由redis-trib管理。

首先,向目标节点发送import命令,当目标节点准备导入属于此插槽的密钥-值对时,发送migrating命令,源节点准备存放此插槽的密钥-值对从源节点获取要转移的密钥,发送migrate命令以转移密钥,并在知道所有密钥都已转移后,redis-trib向群集的任何节点发送node命令以抛出目标节点这个信息

import命令将目标节点的clusterState结构的importing_slots_from数组中相应槽位的元素的值更改为源目标的clusterNode结构,而migrating命令

ASK命令

在重新切片期间,当客户端发送与数据库密钥相关的命令时,该密钥正在迁移。 此时,源节点首先查看其数据库中是否存在,如果返回到不存在的源节点,则返回ASK命令错误消息,将客户端引导到目标节点,然后再次发送上一个命令。 ASK命令在集群环境中也同样隐藏。 如果客户端收到ASK错误并将其移动到正在导入的插槽中的节点,则客户端必须发送ASKING命令才能重新发送特定密钥操作的命令。 如果不发送,节点将被拒绝,并返回MOVED错误。 ASKING命令打开发送命令的客户端的REDIS_ASKING。 此id是一次性id,运行一次命令将删除该id。

ASK命令和MOVED命令的区别

ASK命令和MOVED命令的区别在于,MOVED错误从对该槽位负有责任的节点转移到另一个节点,在以后遇到该槽位的命令时直接向负责该槽位的节点发送命令请求。 ASK错误是在两个节点迁移期间使用的临时方案,在发生ASK错误后,该槽位的命令请求仍被发送到当前负责该槽位的节点。

总结

今天主要对Redis的重新分片进行了分析,如果这篇文章帮助到了你,给我点个赞吧~

❤️ 感谢大家

如果你觉得这篇内容对你挺有有帮助的话:

  1. 欢迎关注我❤️,点赞👍🏻,评论🤤,转发🙏
  2. 关注盼盼小课堂,定期为你推送好文,还有群聊不定期抽奖活动,可以畅所欲言,与大神们一起交流,一起学习。
  3. 有不当之处欢迎批评指正。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。