redis集群中hash tag 使用

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

127.0.0.1:6380> cluster keyslot user:case
(integer) 9491
127.0.0.1:6380> cluster keyslot user:case{1}
(integer) 9842
127.0.0.1:6380> cluster keyslot user:info
(integer) 15429
127.0.0.1:6380> cluster keyslot user:info{1}
(integer) 9842


通过以上代码可以看到,不使用hash tag 对应的hash slot是不同的,使用后则会对应到一个hash slot中

 优点:

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

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

缺点:

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

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

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Redis集群模式是通过分片来实现数据的分布式存储和高可用性。下面是搭建Redis集群的步骤: 1. 下载Redis并解压缩: ``` $ wget http://download.redis.io/releases/redis-5.0.9.tar.gz $ tar xzf redis-5.0.9.tar.gz $ cd redis-5.0.9 ``` 2. 编译Redis: ``` $ make ``` 3. 复制Redis二进制文件: ``` $ cp src/redis-cli src/redis-server /usr/local/bin/ ``` 4. 创建Redis集群的配置文件: ``` $ mkdir /redis_cluster $ cd /redis_cluster $ touch redis-7000.conf redis-7001.conf redis-7002.conf redis-7003.conf redis-7004.conf redis-7005.conf ``` 5. 编辑配置文件: ``` # redis-7000.conf port 7000 cluster-enabled yes cluster-config-file nodes-7000.conf cluster-node-timeout 5000 appendonly yes # redis-7001.conf port 7001 cluster-enabled yes cluster-config-file nodes-7001.conf cluster-node-timeout 5000 appendonly yes # redis-7002.conf port 7002 cluster-enabled yes cluster-config-file nodes-7002.conf cluster-node-timeout 5000 appendonly yes # redis-7003.conf port 7003 cluster-enabled yes cluster-config-file nodes-7003.conf cluster-node-timeout 5000 appendonly yes # redis-7004.conf port 7004 cluster-enabled yes cluster-config-file nodes-7004.conf cluster-node-timeout 5000 appendonly yes # redis-7005.conf port 7005 cluster-enabled yes cluster-config-file nodes-7005.conf cluster-node-timeout 5000 appendonly yes ``` 6. 启动Redis集群: ``` $ redis-server redis-7000.conf $ redis-server redis-7001.conf $ redis-server redis-7002.conf $ redis-server redis-7003.conf $ redis-server redis-7004.conf $ redis-server redis-7005.conf ``` 7. 创建Redis集群: ``` $ redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 --cluster-replicas 1 ``` 该命令创建了一个包含6个节点和1个副本的Redis集群。 8. 测试Redis集群: ``` $ redis-cli -c -p 7000 127.0.0.1:7000> set foo bar OK 127.0.0.1:7000> get foo "bar" ``` 上述步骤完成后,就可以使用Redis集群模式进行数据的分布式存储和高可用性了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值