Redis_集合_有序集合操作_2|学习笔记

简介: 快速学习 Redis_集合_有序集合操作_2

开发者学堂课程【Redis 数据库入门Redis_集合_有序集合操作_2】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/15/detail/53


Redis_集合_有序集合操作_2


内容介绍

一、SortedSet 有序集合

二、命令


、SortedSet有序集合

每个元素都关联着一个浮点数分值,,这是有序的原因,有序就是按照分值从小到大的顺序排列集合中的元素,分值可以相同。

例如:

一个保存了水果价格的有序集合

image.png

一个保存了员工薪水的有序集合

image.png

一个有序集合,保存了正在阅读某些技术书的人数

image.png

有了集合,按照有序集合,取分值时就可以按照这个分值来进行排序。集合中对应的分值可以存储浏览数量或者点赞数量,根据这些数量排完序之后,排行榜就出来了。


二、命令

1.增加一个或多个元素

如果命令中有z开头,都是对有序的集合进行操作。S是 set,L是 list,如果不写,就是 string。 ZADD 就操作元素和分值。

举例:

ZADD fruits 3.2 banana

ZADD fruits 2.0 watermelon

加入进来的同时就已经排序了。


2.移除一个或多个元素

如果元素不存在则自动忽略。

举例:

ZREM fruits 石榴 梨 芒果

ZREM fruits 西瓜

image.png


3.显示分值

ZSCORE key member

注意:计算机并不能精确表达每个浮点数,都是一种近似表达。

举例:

image.png

ZSCORE fruits 芒果

ZSCORE fruits 西瓜


4.增加或减少分值

ZINCRBY key increment member

increment 为负数就是减少

increment 表示增长数量,member 表示增长对象

举例:

image.png

ZINCRBY fruits 1.5西瓜

ZINCRBY fruits -0.8香蕉


5. 返回元素的排名(索引)

ZRANK 不是索引,只是一个排名。默认条件下是正序。

ZRANK key member

举例:

image.png

ZRANK fruits 西瓜

ZRANK fruits 石榴

ZRANK fruits 芒果


6. 返回元素的逆序排名

ZREVRANK key member

REV 是反转的意思,0就是最大的。

举例:

image.png

ZREVRANK fruits 西瓜

ZREVRANK fruits 番石榴

ZREVRANK fruits 芒果


7. 返回指定索引区间元素

ZRANGE key start stop [WITHSCORES]

取值同时可以带分数,也可以不带分数。

如果 score 相同,则按照字典序 lexicographical order 排列

默认按照 score 从小到大,如果需要 score 从大到小排列,使用 ZREVRANGE

举例:

image.png

ZRANGE fruits 0 2

ZRANGE fruits -5 -4(把第一第二位取出)


8. 返回指定索引区间元素

ZREVRANGE key start stop [WITHSCORES]

如果 score 相同,则按照字典序 lexicographical order 的逆序排列默认按照 score从大到小,如果需要 score 从小到大排列,使用 ZRANGE

ZREVRANGE fruits 0 2(从最大的开始,可以通过此命令取到前10个)

ZREVRANGE fruits -5 -4


9. 返回指定分值区间元素

ZRANGEBYSCORE key min max [WITHSCORES][LIMIT offset count],(表示跳过多少个开始取多少个);

返回 score 默认属于[min,max]之间,元素按照 score 升序排列,score 相同字典序;

LIMIT 中 offset 代表跳过多少个元素,count 是返回几个。类似于 Mysql;

使用小括号,修改区间为开区间,例如(5、(10、5);

-inf和+inf表示负无穷和正无穷;

举例:

image.png

ZRANGEBYSCORE fruits 4.0 7.0(表示取4.0到7.0之间)

ZRANGEBYSCORE fruits (4 7

ZRANGEBYSCORE fruits -inf +inf

如果是工资就可以指定工资的区间,把里面的元素都取出来。


10. 返回指定分值区间元素ZREVRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count];

返回 score 默认属于[min,max]之间,元素按照 score 降序排列,score 相同字典降序;

LIMIT 中 offset 代表跳过多少个元素,count 是返回几个。类似于 Mysql;

使用小括号,修改区间为开区间,例如(5、(10、5);

-inf 和+inf 表示负无穷和正无穷;

举例:

image.png

ZREVRANGEBYSCORE fruits 7.0 4.0

ZRANGEBYSCORE fruits 7(4

ZRANGEBYSCORE fruits +inf -inf


11.移除指定排名范围的元素

ZREMRANGEBYRANK key start stop

举例:

ZREMRANGEBYRANK fruits 0 2( remove 0到2的值,是真正的删除)

ZRANGE fruits 0 -1


12. 移除指定分值范围的元素

ZREMRANGEBYSCORE key min max

举例:

image.png

ZREMRANGEBYSCORE fruits 3.0 5.0(删除了西瓜、香蕉、番石榴)

ZRANGE fruits 0 -1


13.返回集合中元素个数

ZCARD key


14.返回指定范围中元素的个数

ZCOUNT key min max

ZCOUNT fruits 4 7(表示4到7之间有多少个元素)

ZCOUNT fruits (4 7


15.并集

既然是集合,所以他有并集的操作和 set 很类似,并集的操作稍微有一点复杂。 如果是集合的并集,只需要考虑集合元素即可。如果是有序集合的并集,考虑元素同时还得考虑分数。

ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight][AGGREGATESUM|MIN|MAX]

numkeys 指定 key 的数量,必须;

WEIGHTS 选项,与前面设定的 key 对应,对应 key 中每一个 score 都要乘以这个权重;

AGGREGATE 选项,指定并集结果的聚合方式;

SUM:将所有集合中某一个元素的 score 值之和作为结果集中该成员的 score 值;

MIN:将所有集合中某一个元素的 score 值中最小值作为结果集中该成员的 score 值;

MAX:将所有集合中某一个元素的 score 值中最大值作为结果集中该成员的 score 值

相关文章
|
2天前
|
数据采集 人工智能 安全
|
12天前
|
云安全 监控 安全
|
3天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
1031 151
|
3天前
|
编解码 人工智能 机器人
通义万相2.6,模型使用指南
智能分镜 | 多镜头叙事 | 支持15秒视频生成 | 高品质声音生成 | 多人稳定对话
|
17天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1725 9
|
9天前
|
人工智能 自然语言处理 API
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸
一句话生成拓扑图!next-ai-draw-io 结合 AI 与 Draw.io,通过自然语言秒出架构图,支持私有部署、免费大模型接口,彻底解放生产力,绘图效率直接爆炸。
675 152
|
10天前
|
人工智能 安全 前端开发
AgentScope Java v1.0 发布,让 Java 开发者轻松构建企业级 Agentic 应用
AgentScope 重磅发布 Java 版本,拥抱企业开发主流技术栈。
634 12
|
5天前
|
SQL 自然语言处理 调度
Agent Skills 的一次工程实践
**本文采用 Agent Skills 实现整体智能体**,开发框架采用 AgentScope,模型使用 **qwen3-max**。Agent Skills 是 Anthropic 新推出的一种有别于mcp server的一种开发方式,用于为 AI **引入可共享的专业技能**。经验封装到**可发现、可复用的能力单元**中,每个技能以文件夹形式存在,包含特定任务的指导性说明(SKILL.md 文件)、脚本代码和资源等 。大模型可以根据需要动态加载这些技能,从而扩展自身的功能。目前不少国内外的一些框架也开始支持此种的开发方式,详细介绍如下。
396 4