当前位置:网站首页>redis集群中hash tag 使用

redis集群中hash tag 使用

2022-07-05 11:31:00 我们一直在路上

        hash tag用于redis集群中。其实现方式为在key中加个{},例如test{1}。使用hash tag后客户端在计算key的crc16时,只计算{}中数据。如果没使用hash tag,客户端会对整个key进行crc16计算。下面演示下hash tag使用。


    
     
  1. 127.0.0.1:6380> cluster keyslot user: case
  2. ( integer) 9491
  3. 127.0.0.1:6380> cluster keyslot user: case{1}
  4. ( integer) 9842
  5. 127.0.0.1:6380> cluster keyslot user:info
  6. ( integer) 15429
  7. 127.0.0.1:6380> cluster keyslot user:info{1}
  8. ( integer) 9842
  9. 通过以上代码可以看到,不使用 hash tag 对应的 hash slot是不同的,使用后则会对应到一个 hash slot中

 优点:

      hash tag主要作用是将某一固定特征数据存储到一台实例上,避免逐个查询集群中实例。例如将用户信息与用户订单数量存储到一个实例用于后续展示统计。


    
     
  1. 将用户id为 1的相关信息存储在 6380实例
  2. 127.0.0.1:6380> set user:info{ 1} 基本信息
  3. OK
  4. 127.0.0.1:6380> set user:order{ 1} 2
  5. OK
  6. 127.0.0.1:6380> keys *
  7. 1) "user:order{1}"
  8. 2) "user:info{1}"

缺点:

        可能会导致数据集中在一个实例中,造成数据倾斜,例如将用户1-10000的数据存储在一个实例中。


    
     
  1. 如果只有 1- 10000的用户有订单信息,那么相当于所有信息都存储在了 6380这台实例中
  2. 127.0.0.1:6380> set user: 1 :order{ 1- 10000} 2
  3. OK
  4. 127.0.0.1:6380> set user: 2 :order{ 1- 10000} 2
  5. OK
  6. 127.0.0.1:6380> set user: 3 :order{ 1- 10000} 2
  7. OK

原网站

版权声明
本文为[我们一直在路上]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_40980639/article/details/125575075