首页 > 数据库 >Redis HashTag

Redis HashTag

时间:2024-03-03 11:13:18浏览次数:33  
标签:set hash 0.1 Redis 实例 user HashTag 6380

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

redis的pipline、lua命令涉及到的key都必须是同一个slot,否则会报错"command keys must in same slot"。

将用户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

标签:set,hash,0.1,Redis,实例,user,HashTag,6380
From: https://www.cnblogs.com/zhengbiyu/p/18049705

相关文章

  • redis 工具类
    一、Redis工具类一、RedisUtil​直接用RedisTemplate操作Redis,需要很多行代码,因此直接封装好一个RedisUtils,这样写代码更方便点。这个RedisUtils交给Spring容器实例化,使用时直接注解注入。packagecom.jin.util;importjava.util.List;importjava.util.Map;importjava.......
  • 一次线上redis慢的排查过程,发现redis根本不慢
    缓存应用场景:对话系统中,用redis来存储用户对话的上下文,用户每次说话将用户对话的上下文带给大模型进行推理,然后返回给用户回答该对话系统用在电话场景,对响应速度要求较高。代码中自己对redis的耗时进行了记录超过50毫秒报警start_time=time.time()dialogueSession=dial......
  • Redis快速入门
    1、什么是Redis远程字典服务器:一个开源的基于内存的数据库,常用作键值存储,缓存和消息队列等Redis通常将全部数据存储在内存中,也可以不时的将数据写入硬盘实现持久化,但仅用于重新启动后将数据加载回内存(内存的速度比硬盘快一个数量级)基于key-value键值对的非关系型数据库......
  • Redis文档
    SpringData是Spring中数据操作的模块,包含对各种数据库的集成,其中对Redis的集成模块就叫做SpringDataRedis。技术支持提供了对不同Redis客户端的整合(Lettuce和Jedis)提供了RedisTemplate统一API来操作Redis支持Redis的发布订阅模型支持Redis哨兵和Redis集群支持基于......
  • Redis基本知识
    一、什么是RedisRedis是一种基于内存的数据库,对数据的读写操作都是在内存中完成,因此读写速度非常快,用于存储键值对、缓存、消息队列、分布式锁等。二、Redis和mencached的区别相同:都是基于内存的数据库,读写都很快不同:1.Redis支持的数据类型更丰富(string、list、hash、set、zs......
  • Redis Docekr WARNING Memory overcommit must be enabled! Without it, a background
    Docker容器ssr-redis|1:C01Mar202422:00:46.869#oO0OoO0OoO0OoRedisisstartingoO0OoO0OoO0Oossr-redis|1:C01Mar202422:00:46.869#Redisversion=7.0.10,bits=64,commit=00000000,modified=0,pid=1,juststartedssr-redis|1:C01Mar......
  • redis自学(9)List
    ListRedis的List类型可以从首、尾操作列表中的元素:  哪一个数据结构能满足上述特征? LinkedList:普通链表,可以从双端访问,内存占用较高,内存碎片较多 ZipList:压缩列表,可以从双端访问,内存占用低,存储上限低 QuickList:LinkedList+ZipList,可以从双端访问,内存占用较低,......
  • ubuntu22.04安装配置redis
    本操作在虚拟机上安装Redis1)更新系统sudoaptupdatesudoaptupgrade2)安装Redissudoaptinstallredis-server3)测试Redis是否工作redis-cli--versionsystemctlstatusredis#注意:如果你的服务器上仅用了ipv6,将会启动失败。4)登入redis-cliredis-cli配置Redis......
  • 面试必备:一线大厂Redis缓存设计规范与性能优化
    说在前面你是否在使用Redis时,不清楚Redis应该遵循的设计规范而苦恼?你是否在Redis出现性能问题时,不知道该如何优化而发愁?你是否被面试官拷问过Redis的设计规范和性能优化而回答不出来别慌,看这篇文章就行了本文,已收录于,我的技术网站aijiangsir.com,有大厂完整面经,工作技术,架构......
  • 亿级电商流量,高并发下Redis与MySQL的数据一致性如何保证
    前言:只要使用到缓存,无论是本地缓存还是使用Redis做缓存,那么就会存在数据同步不一致的问题。先读取缓存,缓存数据有,则立即返回结果如果缓存中没有数据,则从数据库中读取数据把读取到的数据同步到缓存中,提供下次读请求返回数据这样的作法是大多数人使用缓存的方式,这样能......