Redis有序集合-Zset

这篇具有很好参考价值的文章主要介绍了Redis有序集合-Zset。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Redis有序集合Zset

简介
  • Redis有序集合zset与普通集合set非常相似,是一个没有重复元素的字符串集合
  • 不同之处是有序集合的每个成员都关联了一个****评分(score)****,这个评分(score)被用来按照从最低分到最高分的方式排序集合中的成员。集合的成员是唯一的,但是评分可以是重复了
  • 因为元素是有序的, 所以你也可以很快的根据评分(score)或者次序(position)来获取一个范围的元素
  • 访问有序集合的中间元素也是非常快的,因此你能够使用有序集合作为一个没有重复成员的智能列表
score:评分
常用命令
  • 添加多个元素及其评分到key中

    zadd <key1> <score1> <key2> <score2> ...
    
  • 返回zset中start到stop之间的元素,加上withscores可以将分数一起返回到结果集

    zrange key <start> <stop>  WITHSCORES
    
  • 返回zset中score值介于min和max(包括)之间的元素有序集合递增排列

    zrangebyscore key min max 
    
  • 返回zset中score值介于min和max(包括)之间的元素,由大到小排列

    zrevrangebyscore key max min
    
  • 为元素的评分加上增量

    zincrby key <increment> <value>
    
  • 删除zset中指定值得元素

    zrem key value
    
  • 统计分数介于min和max之间的元素个数

    zcount key <min> <max>
    
  • 返回指定值在集合中的排名,从0开始

    zrank <key> <value>
    
数据结构
  • SortedSet(zset)是Redis提供的一个非常特别的数据结构,一方面它等价于Java的数据结构Map<String, Double>,可以给每一个元素value赋予一个权重score,另一方面它又类似于TreeSet,内部的元素会按照权重score进行排序,可以得到每个元素的名次,还可以通过score的范围来获取元素的列表

  • zset底层使用了两个数据结构文章来源地址https://www.toymoban.com/news/detail-433950.html

    • hash,hash的作用就是关联元素value和权重score,保障元素value的唯一性,可以通过元素value找到相应的score值 map {key:score}
    • 跳跃表,跳跃表的目的在于给元素value排序,根据score的范围获取元素列表

到了这里,关于Redis有序集合-Zset的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Redis实战 | 使用Redis 的有序集合(Sorted Set)实现排行榜功能,和Spring Boot集成

    专栏集锦,大佬们可以收藏以备不时之需 Spring Cloud实战专栏:https://blog.csdn.net/superdangbo/category_9270827.html Python 实战专栏:https://blog.csdn.net/superdangbo/category_9271194.html Logback 详解专栏:https://blog.csdn.net/superdangbo/category_9271502.html tensorflow专栏:https://blog.csdn.net/superdangbo/category_869

    2024年02月05日
    浏览(77)
  • 【Redis】Redis 哈希 Hash 键值对集合操作 ( 哈希 Hash 键值对集合简介 | 查询操作 | 增加操作 | 修改操作 )

    Redis 中的 Hash 数据 是一个 键值对集合 , 类似于 Java 中的 Map 集合 ; Hash 数据底层数据结构是 : 压缩列表 ZipList : Hash 中的 键值对 长度较短时 使用 压缩列表 ; 哈希表 HashTable : Hash 中的 键值对 长度较长时 使用 哈希表 ; Redis 中存储对象的方式 : 存储序列化之后的数据 : 将 对象

    2024年02月15日
    浏览(44)
  • Redis Zset类型

    Zset(有序集合)它是集合的一种,不仅可以保存元素,还可以为每个元素关联一个 double 类型的分数(score),Redis 正是通过分数来为集合中的元素进行从小到大的排序。在 Zset 中,元素的值是唯一的,但分数(score)却可以重复。 有序集合 :该有序集合显示了三国中的武将

    2024年01月19日
    浏览(39)
  • Redis——zset类型详解

    zset是有序集合,将zset中的members引入一个属性score,根据这个属性值来进行排序,其中members不可以重复,score可以重复(按照字典序排序),默认按照升序排序 有序集合中提供指定分数和元素范围查找,计算成员排名功能,一般用于排行榜系统 zset中的member和score并不是键值对

    2024年02月09日
    浏览(38)
  • redis的zset跳表

    redis用了哪些算法来实现他的数据结构? 读懂才会用 : 带你见识 Redis 的 zset 读懂才会用:Redis ZSet 的几种使用场景 跳表中每一层节点数是其下一层的一半(或其他固定比例),是为了在保证查找效率的同时,尽可能地减少额外的空间消耗。当我们在跳表中查找一个元素时,

    2024年02月14日
    浏览(29)
  • 9.Redis-zset

    zset 中的 member 仍然要求是唯一的。 排序规则:按照输入的 score 来进行排序,如果score相同,再按照元素自身字符串的字典序来排序,score 不同仍然按照 score 来排序。 zadd 添加或者更新指定的元素以及关联的 score 到 zset 中,score 应该符合 double 类型,+inf/-inf 作为正负 极限也

    2024年02月10日
    浏览(36)
  • redis中的zset的原理

    一、zset有序集合的原理 如果有序集合元素个数少于128个且元素值小于64字节,使用压缩列表(新版本已经废弃压缩列表改用listpack数据结构了) 如果不满足上述条件,采用跳表作为redis的底层数据结构 二、压缩列表 1.由连续内存块组成的顺序性数据结构 2.根据数据大小和类型

    2024年03月10日
    浏览(39)
  • 【Redis】数据结构 - ZSet

    使用场景 Redis 的 Sorted Set(有序集合,zSet)数据结构适用于以下场景: 排行榜:可以使用 Sorted Set 存储用户的分数和排名信息,通过 zadd 和 zincrby 等命令实现分值增加和更新操作,然后使用 zrevrange 等命令获取一定范围内的分数排名信息,从而实现排行榜功能。 时间轴:可

    2023年04月09日
    浏览(45)
  • Redis--Zset使用场景举例(滑动窗口实现限流)

    前言 在Redis–Zset的语法和使用场景举例(朋友圈点赞,排行榜)一文中,提及了redis数据结构zset的指令语法和一些使用场景,今天我们使用zset来实现滑动窗口限流,详见下文。 什么是滑动窗口 滑动窗口是一种流量控制策略,用于控制一定时间内请求的访问数量。 其原理是

    2024年01月19日
    浏览(54)
  • Redis数据类型(list\set\zset)

    \\\"maybe it\\\'s why\\\"          列表类型是⽤来存储多个 有序 的字符串,列表中的每个字符串称为元素(element),⼀个列表最多可以存储个2^32 - 1个元素。在Redis中,可以对列表两端插⼊(push)和弹出(pop),还可以获取指定范围的元素列表、获取指定索引下标的元素等。列表是

    2024年02月11日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包