redis集群中hash tag 使用

        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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值