当前位置:   article > 正文

redis CROSSSLOT Keys in request don‘t hash to the same slot_redis crossslot keys in request don't hash to the

redis crossslot keys in request don't hash to the same slot

BITOP operation destkey key [key ...]

对一个或多个保存二进制位的字符串 key 进行位元操作,并将结果保存到 destkey 上

执行命令和结果如下:

  1. > 127.0.0.1@6001 connected!
  2. > BITOP AND key1 key2
  3. CROSSSLOT Keys in request don't hash to the same slot
  4. > BITOP AND {key}1 {key}2
  5. 0

报错的含义:请求的Key键没有散列到同一个槽位中

查看槽位,当使用hashtag时槽位才相同

  1. > cluster keyslot key1
  2. 9189
  3. > cluster keyslot key2
  4. 4998
  5. > cluster keyslot {key}1
  6. 12539
  7. > cluster keyslot {key}2
  8. 12539

Redis 哈希槽和hashtag简单介绍:

  1. Redis集群没有使用一致性hash,而是引入了哈希槽的概念,Redis集群有16384个哈希槽,
  2. 每个key通过CRC16 校验后对16384取模来决定放置哪个槽,集群的每个节点负责一部分hash槽。
  3. 有一个例外,HashTag可以确保两个键都在同一哈希槽的方式。HashTag即是用{}包裹key的一个子串,
  4. 如{key}1, {key}2。在设置了HashTag的情况下,集群会根据HashTag决定key分配到的slot,
  5. 两个key拥有相同的HashTag:{key}, 它们会被分配到同一个slot。
  6. 注意HashTag使用过多会导致分布不均数据倾斜,需谨慎使用。

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号