当前位置:   article > 正文

Redis集群模式下 Hashtag 问题_redis.exceptions.responseerror: crossslot keys in

redis.exceptions.responseerror: crossslot keys in request don't hash to the

错误问题1:

redis.exceptions.ResponseError: CROSSSLOT Keys in request don't hash to the same slot

在集群中,key会被划分到不同的槽中。不同的节点会拥有散列槽的一个子集。

多个key的操作、事务或者lua脚本调用多个key是允许的,只要所有被调用的key都在一个节点的hash槽中就可以。

redis集群实现了所有非分布式版本的单key命令。复杂命令的执行像set类型联合或者插入也是可以实现的,只要保证所有的key都属于单个节点。

你可以使用Hash Tags强制所有的key属于一个节点

Redis 集群中额Slot概念

在 Redis Cluster 中有一个概念 slot(槽位),我们翻译为槽。slot(槽位)数量是固定的,为 16384 个。这些 slot(槽)会均匀地分布到各个节点上。另外 Redis 的键和值会根据 hash 算法存储在对应的 slot(槽位)中。简单讲,对于一个键值对,存的时候在哪里是通过 hash算法算出来的,那么取得时候也会算一下,知道值在哪个 slot 上。根据 slot 编号再到对应的节点上去取。

哈希槽计算公式 

集群使用公式slot=CRC16(key)/16384来计算key属于哪个槽,其中CRC16(key)语句用于计算key的CRC16 校验和。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/794048
推荐阅读
相关标签
  

闽ICP备14008679号