Redis中有序集合(Sorted Set)常见命令详解

news/2025/2/22 14:55:39

有序集合(Sorted Set)常见命令详解

有序集合(Sorted Set,简称zset)是Redis中一种非常特殊的数据结构,它结合了集合(Set)和有序列表(Sorted List)的特点。在有序集合中,每个成员都有一个与之关联的分数(score),Redis会根据这个分数自动对成员进行排序。有序集合非常适合用于实现排行榜等功能。

以下是Redis有序集合的一些常用命令及其详细说明:

添加成员

  • zadd key score member [score member ...]
    • 功能:向有序集合中添加一个或多个成员,并指定每个成员的分数。
    • 参数
      • key:有序集合的键。
      • score:成员的分数(double类型)。
      • member:要添加到有序集合中的成员,可以是一个或多个。
    • 返回值:成功添加的新成员数量。如果成员已经存在于集合中,则更新其分数。

升序查看成员

  • zrange key start stop [withscores]
    • 功能:返回有序集合中指定索引范围内的成员,按分数升序排列。
    • 参数
      • key:有序集合的键。
      • start:起始索引(包含)。
      • stop:结束索引(包含)。
      • withscores(可选):如果指定此选项,则返回成员及其分数。
    • 返回值:指定索引范围内的成员列表(及可选的分数)。

降序查看成员

  • zrevrange key start stop [withscores]
    • 功能:返回有序集合中指定索引范围内的成员,按分数降序排列。
    • 参数返回值zrange命令相同。

升序查看成员索引位置

  • zrank key member
    • 功能:返回有序集合中指定成员的排名(按分数升序),排名从0开始。
    • 参数
      • key:有序集合的键。
      • member:要查询排名的成员。
    • 返回值:成员的排名。如果成员不存在于集合中,则返回nil

降序查看成员排名

  • zrevrank key member
    • 功能:返回有序集合中指定成员的排名(按分数降序),排名从0开始。
    • 参数返回值zrank命令相同。

增加成员分数

  • zincrby key increment member
    • 功能:将有序集合中指定成员的分数增加指定的增量。
    • 参数
      • key:有序集合的键。
      • increment:要增加的分数增量。
      • member:要增加分数的成员。
    • 返回值:增加后的成员分数。

删除成员

  • zrem key member [member ...]
    • 功能:从有序集合中移除一个或多个成员。
    • 参数
      • key:有序集合的键。
      • member:要移除的成员,可以是一个或多个。
    • 返回值:成功移除的成员数量。

查看成员数量

  • zcard key
    • 功能:返回有序集合中的成员数量。
    • 参数
      • key:有序集合的键。
    • 返回值:成员数量。

查看成员分数

  • zscore key member
    • 功能:返回有序集合中指定成员的分数。
    • 参数
      • key:有序集合的键。
      • member:要查询分数的成员。
    • 返回值:成员的分数。如果成员不存在于集合中,则返回nil

查看分数区间成员数量

  • zcount key min max
    • 功能:返回有序集合中分数在指定区间内的成员数量。
    • 参数
      • key:有序集合的键。
      • min:区间的最小值。
      • max:区间的最大值。
    • 返回值:指定区间内的成员数量。

升序查看分数区间成员

  • zrangebyscore key min max [withscores] [limit offset rows]
    • 功能:返回有序集合中分数在指定区间内的成员,按分数升序排列,并支持分页查询。
    • 参数
      • key:有序集合的键。
      • minmax:分数区间的最小值和最大值。
      • withscores(可选):如果指定此选项,则返回成员及其分数。
      • limit offset rows(可选):分页参数,offset表示跳过的成员数量,rows表示返回的成员数量。
    • 返回值:指定区间内的成员列表(及可选的分数)和分页信息。

降序查看分数区间成员

  • zrevrangebyscore key max min [withscores] [limit offset rows]
    • 功能:返回有序集合中分数在指定区间内的成员,按分数降序排列,并支持分页查询。
    • 参数返回值zrangebyscore命令相似,但分数区间和排序方向相反。

删除分数区间成员

  • zremrangebyscore key min max
    • 功能:移除有序集合中分数在指定区间内的所有成员。
    • 参数
      • key:有序集合的键。
      • minmax:要移除的成员的分数区间的最小值和最大值。
    • 返回值:被移除的成员数量。

按字典序查看成员

  • zrangebylex key min max [limit offset rows]
    • 功能:返回有序集合中成员按字典序在指定区间内的所有成员,并支持分页查询。注意,此命令仅按成员的字典序进行排序,与成员的分数无关。
    • 参数
      • key:有序集合的键。
      • minmax:字典序区间的最小值和最大值,可以使用-表示最小不限,使用+表示最大不限,使用[(表示区间是否包含边界值。
      • limit offset rows(可选):分页参数。
    • 返回值:指定区间内的成员列表和分页信息。

这些命令为操作Redis有序集合提供了丰富的功能,适用于各种需要排序和范围查询的场景,如排行榜、成绩列表等。


http://www.niftyadmin.cn/n/5862413.html

相关文章

路由器的WAN口和LAN口有什么区别?

今时今日,移动终端盛行的时代,WIFI可以说是家家户户都有使用到的网络接入方式。那么路由器当然也就是家家户户都不可或缺的设备了。而路由器上的两个实现网络连接的基础接口 ——WAN 口和 LAN 口,到底有什么区别?它们的功能和作用…

DeepSeek安装部署笔记(一)

Ollamaopen-WebUI部署 DeepSeek安装部署笔记第一步 Ollama安装1.安装ollama:官网https://ollama.com/下载2.上面安装完成,在cmd命令行: 第二步 给DeepSeek添加OpenWebUI界面(重点)1.安装conda:用它来管理py…

DDD架构实战:用Java实现一个电商订单系统,快速掌握领域驱动设计

引言 你是否曾为复杂的业务逻辑感到头疼?是否在面对需求变更时感到无力?今天,我们将带你深入**领域驱动设计(DDD)**的世界,通过一个简单的电商订单系统实战项目,快速掌握DDD的核心思想与实现方…

『大模型笔记』详细对比GraphRAG与传统RAG!

详细对比GraphRAG与传统RAG! 文章目录 详细对比GraphRAG与传统RAG!要点最终内容1. GraphRAG的作用与应用场景2. GraphRAG与传统RAG的对比3. GraphRAG的工作原理4. GraphRAG如何提高准确性和提供完整答案5. GraphRAG在开发和维护中的优势6. GraphRAG对生产环境的影响7. GraphR…

黑盒测试、白盒测试、单元测试、集成测试、系统测试、验收测试的区别与联系

黑盒测试 vs. 白盒测试 vs. 其他测试类型(单元测试、集成测试、系统测试、验收测试)的区别与联系 一、黑盒测试(Black-box Testing) 定义:不关心代码内部实现,只关注输入和输出是否符合预期。特点&#x…

Linux-Ansible自动化运维

文章目录 自动化运维Ansible 🏡作者主页:点击! 🤖Linux专栏:点击! ⏰️创作时间:2025年02月21日17点38分 自动化运维 自动化运维常用工具 Ansible 和 SaltStack 自动化运维优势: 服…

【原创】Ubuntu 22安装nexus私服

Nexus Repository Manager 是由 Sonatype 公司开发的一款非常流行的 Maven 私服解决方案。Nexus 提供了多种类型的仓库管理,包括代理远程仓库、托管内部构件的仓库以及用于快照版本和发布版本的仓库。 下载 官网地址:https://www.sonatype.com/ 下载地…

零工市场小程序利用 Java 连接企业与自由职业者?

我们都知道,Java语言功能极其强大,Java 具有跨平台性、稳定性和安全性等特性,基于 Java 开发的小程序也继承了这些优点。那么Java零工市场小程序利用这一点,做起了企业和自由职业者之间的桥梁。 企业可以在小程序上详细发布需求&a…