首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏火属性小虫

    Redis Zset

    , 6 5月 2022 作者 847954981@qq.com 后端学习 Redis Zset Zset是Redis五大数据类型之一。 Zset集合和Set集合非常相似,不同之处在于:Zset集合是有序的,而Set集合是无序的。 Zset集合有序,是因为集合中的每个成员都有一个评分(score),这个评分(评分可以重复)用于按照从低到高的方式排序。 Zset的插入语法为: redisTemplate.opsForZSet().add("value",data,score); 其中,存在第一个参数表示数据的Value,第二个表示数据本身,第三个表示数据的 score用于Zset对数据进行排序。

    32330编辑于 2023-02-22
  • 来自专栏九州牧云

    Redis ZSET

    For the past 2 years I’ve been all about Redis, and something I’m continually excited about is ZSET. What’s your favorite use of ZSET? Check out the ZSET documentation for more details!

    52440发布于 2019-08-21
  • 来自专栏兜兜毛毛

    Redis ZSet (5)

    存储类型 ZSet集合基本与Set相同,只是多了一个数值类型属性score,score相同时,按照Key的ASC码排序。 ? 数据结构对比 数据结构 是否允许重复 是否有序 有序实现方式 List 是 是 索引下标 Set 否 否 无 ZSet 否 是 score属性 # 无序插入 127.0.0.1:6379> zadd redis.conf配置 zset-max-ziplist-entries 128 zset-max-ziplist-value 64 超过阈值之后,使用skiplist+dict存储。 在插入一个数据的时候,决定要放到那一层,取决于一个算法(在redis中t_zset.c有一个zslRandomLevel这个方法)。 现在当我们想查找数据的时候,可以先沿着这个新链表进行查找。 { dict *dict; zskiplist *zsl; } zset; 随机获取层数的函数:(源码:t_zset.c) /* Returns a random level for

    49330发布于 2020-03-19
  • 来自专栏从码农的全世界路过

    Redis Zset有序集合

    Redis Zset是有序集合,和Set集合一样也是不允许存在重复元素,不同的是Zset中每个元素都会关联一个double类型的分数,Redis正是通过分数为集合中的成员进行排序. Zset最典型应用场景就是积分排行榜.对积分可运算,可按积分取用户名次等等操作. Zset可以按很多维度进行操作,很容易搞混,但总体来说操作命令可以分为以下3类: lex:按字典顺序操作,参照一下9中的zrangebylex 命令 score:按分数操作,参照一下13中的zrangebyscore

    45210编辑于 2022-06-20
  • 来自专栏蓝天

    REdis zset和double

    平台:x86_64 结论:Zset的最大分数不要超过18014398509481982(17位数字,54位二进制),否则不会得到期望的值。 REdis:5.0.4 Zset采用double存储分数值(score),而incrbyfloat和hincrbyfloat采用的是long double存储数值。 取值源代码: double zzlGetScore(unsigned char *sptr) { // t_zset.c:722 unsigned char *vstr; unsigned int 

    1.7K70发布于 2019-05-10
  • 来自专栏Redis

    Redis的ZSet底层数据结构,ZSet类型全面解析

    文章目录一、ZSet有序集合类型1.1 简介1.2 应用场景1.3 底层结构1.4 ZSet常用命令二、ZSet底层结构详解2.1 数据结构2.2 压缩列表ZipList2.3 跳表详解2.3.1 跳表是什么 来实现 Zset。 以上只是 ZSet 的一些常见应用场景,实际上Zset 的应用非常广泛,只要是需要排序和排名功能的场景,都可以考虑使用 ZSet。 因此zset还会采用ZipList结构来节省内存,不过需要同时满足两个条件:元素数量小于zset_max_ziplist_entries,默认值128每个元素都小于zset_max_ziplist_value :删除zset中的一个指定元素ZSCORE key member : 获取zset中的指定元素的score值ZRANK key member:获取指定元素在zset 中的排名(从0开始)ZCARD key

    81010编辑于 2024-11-03
  • 来自专栏并发笔记

    redis妙用-zset类型

    [redis_zset_1.png] api 基本操作 命令 说明 ZADD key score element... 存储元素 ZREM key elementelement... [redis_zset_2.png] 热点新闻排行榜 [redis_zset_3.png] # 将点击数作为score,没点一次进行加1 ZINCRBY hotnews::20190528 1 李可首位归化国脚

    86621发布于 2020-10-21
  • 来自专栏码匠的流水账

    聊聊claudb的zset command

    序 本文主要研究一下zset command SortedSetAddCommand claudb-1.7.1/src/main/java/com/github/tonivade/claudb/command /zset/SortedSetAddCommand.java @Command("zadd") @ParamLength(3) @ParamType(DataType.ZSET) public class try { DatabaseValue initial = db.getOrDefault(safeKey(request.getParam(0)), DatabaseValue.EMPTY_ZSET /SortedSetCardinalityCommand.java @ReadOnly @Command("zcard") @ParamLength(1) @ParamType(DataType.ZSET /SortedSetRemoveCommand.java @Command("zrem") @ParamLength(2) @ParamType(DataType.ZSET) public class

    34020发布于 2020-09-04
  • 来自专栏码匠的流水账

    聊聊claudb的zset command

    序 本文主要研究一下zset command OIP (40).jpeg SortedSetAddCommand claudb-1.7.1/src/main/java/com/github/tonivade /claudb/command/zset/SortedSetAddCommand.java @Command("zadd") @ParamLength(3) @ParamType(DataType.ZSET try { DatabaseValue initial = db.getOrDefault(safeKey(request.getParam(0)), DatabaseValue.EMPTY_ZSET /SortedSetCardinalityCommand.java @ReadOnly @Command("zcard") @ParamLength(1) @ParamType(DataType.ZSET /SortedSetRemoveCommand.java @Command("zrem") @ParamLength(2) @ParamType(DataType.ZSET) public class

    26321发布于 2020-08-28
  • 来自专栏Initial programming

    初识Redis · set和zset

    那么在本文呢,既然有了前几个类型多个基础,我们学习set和zset也是会比较轻松的了。 废话不多说,我们直接进入主题吧。 同学可自行下来探索~ zset 基本命令 对于zset和set来说,zset的特点是有序的,这里的有序代表的就是用权重来进行排序了 就像这张表一样,不同的三国猛将用武将值来进行排序,这样就构成了一个zset ,不过因为引入了分数的概念,那么对于zset来说,它的命令操作自然就要复杂的多了。 既然引入了分数的概念,我们需要认识到一个点是zset存储的是元素,对于分数来说,它只是一个辅助工具而已。 ,对于zset来说默认的就是升序了。

    55710编辑于 2025-04-17
  • 来自专栏Golang开发

    Redis(6)——zset有序集合

    xiaoming" 2) "2" 127.0.0.1:6379> zremrangebyscore zsetkey 2 inf (integer) 1 内部编码 ziplist压缩列表,当有序集合的元素个数小于zset-max-ziplist-entities 配置(默认是128个),同时每个元素的值都小于zset-max-ziplist-value配置默认64个字节 redis 会用ziplist 来作为有序集合的内部实现。

    68130发布于 2019-05-29
  • 来自专栏程序员备忘录

    《redis in action》ZSet相关命令

    在第一章中我们展示了一个简单的例子,使用zset来对发布的文章根据时间和投票的数据进行排序。 本片文章我们将要讨论有关zset的一些其他操作命令,我们可以学习到如何添加和更新zset中的数据,当然我们也将了解如何使用zset数据结构进行intersection(差集)和并集的命令。 zadd:添加一个给定分数的元素到zset中 zrem:移除多个指定的元素,并返回移除成功的个数 zcard:返回zset中元素的个数 zincrby:增加元素的分速 zcount:返回指定分数区间的元素的个数 当然我们也可以采用求和的并集策略,这样我们就可以对两个zset中的分数进行合并,从而得到一个新的zset,这在工作中很常用。 在第七章,我们将使用zintrestore和zunionstore作为不同的检索分类,我们将要讨论不同渠道的zset分数的权重参数问题,这块使用set和zset就可以进行解决。

    40810编辑于 2022-08-11
  • 来自专栏雨中散步撒哈拉

    redis | 八、redis之Zset

    实例: 127.0.0.1:6379> zadd zset 1 one 2 two 3 three 4 four 5 five (integer) 5 127.0.0.1:6379> zrange zset 删除成员 # 移除zset下的one 127.0.0.1:6379> zrem zset one (integer) 1 127.0.0.1:6379> zrange zset 0 -1 1) "two 127.0.0.1:6379> zrange zset 0 -1 1) "two" 2) "five" # 移除分数区间为[1,2] 127.0.0.1:6379> zrange zset 0 -1 1 ) "two" 2) "five" 127.0.0.1:6379> zremrangebyscore zset 1 2 (integer) 1 127.0.0.1:6379> zrange zset 0 127.0.0.1:6379> zlexcount zset - + (integer) 5 # 根据key和value值,获取分数 127.0.0.1:6379> zscore zset four

    56510编辑于 2022-09-21
  • 来自专栏程序猿~

    Redis - zset的应用场景

    滑动窗口限流 score作为时间戳,可统计最近一段时间内内的成员数量,实现滑动窗口限流 参考 读懂才会用:Redis ZSet 的几种使用场景

    1.2K10发布于 2021-01-06
  • 来自专栏一个执拗的后端搬砖工

    redis基于zset实现延迟队列

    内容目录 一、延迟队列使用场景二、zset如何实现延迟队列三、springboot基于zset实现延迟队列四、做成服务化五、使用zset实现延迟队列的缺点六、其他实现方式 一、延迟队列使用场景 1.订单超时处理 当然我们也可以基于zset实现延迟队列,基于 ZSet 实现延迟队列的原理是利用有序集合的特性。 下面是基于 Redis 的 ZSet 实现延迟队列的简要介绍: 将延迟消息作为 ZSet 的成员,延迟时间作为成员的分数(score)。 将消息插入到 ZSet 中,使用ZADD命令可以将消息添加到 ZSet 中,并指定其延迟时间作为分数。 定期轮询 ZSet,检查是否有到期的延迟消息。 五、使用zset实现延迟队列的缺点 通过使用redis的zset能够满足一些简单场景的延迟队列场景,但是也存在很多缺陷。

    3.9K41编辑于 2023-08-09
  • 来自专栏第三方工具

    redis zset 延迟合并任务处理

    redis zset 延迟合并任务处理 @Autowired public RedisTemplate redisTemplate; ##1.发送端:在接口中收集任务ID,累计时间段之后 ##redis zset 主键,任务ID(不重复),时间戳 String key = "任务分组名称"; //延时 redisTemplate.opsForZSet().add(key,taskId

    25910编辑于 2024-10-09
  • 来自专栏兮动人的博客

    【Redis】Zset有序类型基本使用

    简介 Redis有序集合zset(sorted set)与普通集合set非常相似,是一个没有重复元素的字符串集合。 分数区间内的元素个数 zcount <key> <min> <max> [在这里插入图片描述] 返回该值在集合中的排名,从0开始 zrank <key> <value> [在这里插入图片描述] 案例:如何利用zset [在这里插入图片描述] 3. zset数据结构 SortedSet(zset)是Redis提供的一个非常特别的数据结构,一方面它等价于Java的数据结构Map<String, Double>,可以给每一个元素 zset底层使用了两个数据结构 (1)hash,hash的作用就是关联元素value和权重score,保障元素value的唯一性,可以通过元素value找到相应的score值。

    4.8K10编辑于 2022-02-24
  • 来自专栏golang+php

    redis源码之zset结构的实现

    zset为有序的,自动去重的集合数据类型,zset数据结构底层实现为字典(dict)+跳表(skiplist)当数据比较少时,用ziplist编码数据结构存储,当满足以下条件之一时,则采用字典+跳表来存储 zset-max-ziplist-entries 128 //元素个数超过128,将用skiplist编码 zset-max-ziplist-value 64 //单个元素大小超过64byte, 将用skiplist编码 typedef struct zset { dict *dict; zskiplist *zsl; } zset; 对于字典(dict)的数据结构来说,可以用

    1.7K50发布于 2020-10-14
  • 来自专栏波波烤鸭

    Redis教程08(ZSet有序集合介绍)

    而我们本文要介绍的ZSet其实是在Set的基础上绑定了一个score来实现集合数据按照score排序的集合。 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。

    1K40发布于 2019-04-02
  • 来自专栏java学习java

    Redis之zset(sorted set)类型解读

    基本介绍  Redis有序集合zset与普通集合set非常相似,是一个没有重复元素的字符串集合。

    39330编辑于 2023-10-15
领券