Redis系列(六)、数据类型之有序集合ZSet(sorted_set)

Redis 五大数据类型(String、List、Hash、Set 及 Zset) 文章目录一、String 数据类型1.概述2.命令示例2.1 EXISTE、APPEND、GET、SET、STRLEN2.2 INCR、DECR、DEL、INCRBY、DECRBY2.3 GETSET、SETEX、TTL、SETNX2.4 SETRANGE、GETRANGE2.5 MSET、MGET、MSETNX二、List 数据类型1.概述2.命令示例2.1 LPUSH、LPUSHX、LRANGE、LPOP/LIEN2.2 LREM、LSET、LINDEX、LTRIM2.4 LINSERT2.5 RPUS 阅读详情

目录

介绍

命令行模式

增

查

删

改

交集

并集

应用场景


Redis支持五种数据类型:String, Hash, List, Set, ZSet,这个系列介绍一下如何使用这些数据类型,本篇介绍使用命令行模式以及python客户端对redis进行操作,实际项目的过程中也大多是一模一样的用法。

相关内容:

Redis系列(一)、CentOS7下安装Redis6.0.3稳定版

Redis系列(二)、数据类型之字符串String 

Redis系列(三)、数据类型之哈希Hash

Redis系列(四)、数据类型之列表List

Redis系列(五)、数据类型之无序集合Set

------------------------Redis有序集合类型----------------------

介绍

Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 2^32 - 1 (4294967295, 每个集合可存储40多亿个成员)。

命令行模式

进入命令行模式:

redis-cli -a password_value
 
redis-cli -a password_value --raw
--raw 避免中文显示乱码

help

使用下面的命令查看手册:

help @sorted_set

 

增

zadd

往有序集合中新增成员,需要指定该成员的分数,分数可以是整形或浮点型,当分数相同时候,索引下标按照字典排序:

ZADD key [NX|XX] [CH] [INCR] score member [score member ...]

查

zcard

获取有序集合的成员数:

ZCARD key

 

zcount

从有序集合内获取指定分数区间内的成员数:

ZCOUNT key min max

 

zlexcount

根据字典排序返回min ,max之间的数据量,具体lex的介绍请参考下面的ZRANGEBYLEX部分:

ZLEXCOUNT key min max

zscore

返回有序集中,成员的分数值,不存在的成员返回空:

ZSCORE key member

 

zscan

用于迭代有序集合中的元素(包括元素成员和元素分值)并将匹配到的值返回:

ZSCAN key cursor [MATCH pattern] [COUNT count]

 

zrange

根据下标查看集合内所有成员(及分数),[start,stop]:

ZRANGE key start stop [WITHSCORES]

 

zrangebylex

 通过字典区间返回有序集合的成员:

min:字典中排序位置较小的成员,必须以"[" 或者以"("开头,可使用"-"代替, "["代表闭区间,"("代表开区间

max:字典中排序位置较大的成员,必须以"[" 或者以"("开头,可使用"+"代替, "["代表闭区间,"("代表开区间

不要在分数不一致的SortSet集合中去使用 ZRANGEBYLEX 指令,因为获取的结果并不准确。

limit offset count: 分片查询,limit为关键字,offset表示从结果集的哪个下标开始分片,count表示分片的数据量。

ZRANGEBYLEX key min max [LIMIT offset count]

 

zrangebyscore

 根据分数查看集合内所有成员(及分数),[start,stop]:

ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]

 

zrank

返回有序集合中指定成员的索引(下标):

ZRANK key member

 

zrevrange

与zrange功能类似,不同的是zrevrange会将集合先反序[reverse]之后再执行zrange返回:

ZREVRANGE key start stop [WITHSCORES]

 

zrevrangebylex

结合zrangebylex和zrevrange功能。反序通过字典区间返回有序集合的成员:

ZREVRANGEBYLEX key max min [LIMIT offset count]

zrevrangebyscore

结合zrangebyscore和zrevrange功能。反序通过分数区间返回有序集合的成员:

ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]

zrevrank

结合zrank和zrevrange功能。反序返回有序集合中指定成员的索引(下标):

ZREVRANK key member

zpopmax

redis5版本之后的新功能。从集合中弹出分数最高的成员,返回该成员和分值,然后从集合中将其移出:

ZPOPMAX key [count]

 

zpopmin

redis5版本之后的新功能。与zpopmax相反,从集合中弹出分数最低的成员,返回该成员和分值,然后从集合中将其移出:

ZPOPMIN key [count]

 

bzpopmax

redis5版本之后的新功能。在参数中的所有有序集合均为空的情况下,阻塞连接。参数中包含多个有序集合时,按照参数中key的顺序,返回第一个非空key中分数最大的成员和对应的分数。参数 timeout 可以理解为客户端被阻塞的最大秒数值,0 表示永久阻塞。

BZPOPMAX key [key ...] timeout

 

bzpopmin

 redis5版本之后的新功能。与bzpopmax相反。在参数中的所有有序集合均为空的情况下,阻塞连接。参数中包含多个有序集合时,按照参数中key的顺序,返回第一个非空key中分数最小的成员和对应的分数。参数 timeout 可以理解为客户端被阻塞的最大秒数值,0 表示永久阻塞。

BZPOPMIN key [key ...] timeout

 

删

zrem

从集合中移除指定的成员:

ZREM key member [member ...]

zremrangebylex

结合zrem和zrangebylex功能:将zrangebylex匹配的结果从有序集合中删除:

ZREMRANGEBYLEX key min max

zremrangebyrank

结合zrem和zrank功能:将zrank匹配的结果从有序集合中删除:

ZREMRANGEBYRANK key start stop

zremrangebyscore

结合zrem和zrangebyscore功能:将zrangebyscore匹配的结果从有序集合中删除:

ZREMRANGEBYSCORE key min max

改

zincrby

修改有序集合内成员的分数,将有序集合内成员的分数增加increment分值,increment可以为浮点型整型也可以为负数或正数:

ZINCRBY key increment member

交集

zinterstore

计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中,给定 key 的数量必须以 numkeys 参数指定,并将该交集(结果集)储存到 destination ,默认情况下,结果集中某个成员的分数值是所有给定集下该成员分数值之和,可以使用aggregate参数指定将相同成员的分数取最小值或最大值:

ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]

 

并集

zunionstore

计算给定的一个或多个有序集的并集,并存储在新的 key 中:

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

 

应用场景

  1. 点赞排行
  2. 排行榜
  3. 显示分数和信息(如学生分数排名)

 

Python客户端与命令行函数基本上完全一致,篇幅太长因此不再过多的展示。

希望本文对你有帮助,请点个赞鼓励一下作者吧~ 谢谢!

Redis学习之旅 ZSet(Sorted set)篇 Redis学习之旅 ZSet(Sorted set)篇 为啥它叫ZSet?因为Set的开头字母也是S,Sorted Set缩写为SSet不合适 ,会导致命令冲突 ,所以干脆用Z代替,ZSet出生了~ 它的出现也是解决set天生无序的问题 命令学习 redis-cli模式下键入 help @sorted_set就可以快速相关的命令集合 1.0 时代 命令 起始版本 作用 示例 ZADD 1.2.0 添加元素 ZADD key [NX ZCARD 1.2.0 和SCARD很类似,统计 阅读详情

相关推荐

PyTorch实战:5步搞定QAT量化感知训练(附避坑指南)

本文详细介绍了在PyTorch中实施量化感知训练(QAT)的五步实战流程。通过环境准备、模型融合、伪量化节点与STE原理剖析、校准微调训练、模型转换与导出等步骤,帮助开发者有效压缩模型以适配移动端与边缘设备部署,并提供了关键的超参数设置与常见问题避坑指南。

weixin_29083373的博客 418

Redis--(6) Set数据类型

一、概述: Sorted Set(有序集合)和Set类型极为相似,它们都是字符串的集合,都不允许重复的成员出现在一个Set中。它们之间的主要差别是Sorted Set中的每一个成员都会有一个分数(score)与之关联,Redis正是通过分数来为集合中的成员进行从小到大的排序。然而需要额外指出的是,尽管Sorted Set中的成员必须是唯一的,但是分数(score)却是可以重复的。 ...

zhangxiwen_的博客 376

013 PID参数整定:Ziegler-Nichols法

几年前在调试一台伺服压机,客户要求位置精度±0.01mm,响应时间小于50ms。我按照教科书上的经验值设了P=1.5,I=0.02,D=0.01,结果电机一启动就开始尖叫,位置超调直接干到0.3mm,然后开始震荡,像极了喝醉的舞者。现场工程师看我的眼神,就像在看一个刚毕业的实习生。那次之后我明白了一个道理:PID参数不是靠猜的,也不是靠经验公式硬套的。你需要一个系统的方法,而Ziegler-Nichols法就是那个让你从“瞎调”走向“有章可循”的起点。

m0_50546716的博客 101

Redis(七) -- Redis数据类型(四) -- sorted set(zset)

1.zadd:添加元素到有序集合中 格式:ZADD key [NX|XX] [CH] [INCR] score member [score member …] 添加时可以指定多个分数/成员(score/member)对。 如果指定添加的成员已经是有序集合里面的成员,则会更新改成员的分数(scrore)并更新到正确的排序位置。 如果key不存在,将会创建一个新的有序集合(sorted set)并将分数/成员(score/member)对添加到有序集合,就像原来存在一个空的有序集合一样。如果key存在,但是类

weixin_39724194的博客 3306

18、知识表示与学习范式

本文探讨了智能系统中的核心组成部分——知识表示与学习范式。从基础知识到实际应用,详细解析了符号表示、框架表示、语义网络和本体表示等知识表示方法,并介绍了监督学习、无监督学习、半监督学习和强化学习等学习范式。此外,还深入分析了这些技术在自然语言处理、图像识别和推荐系统等领域的具体应用及操作步骤。最后,展望了未来可能的技术发展方向。

ttt77的博客 84

ViT 实战 万字全攻略:从图像分类到医学影像,Transformer 重塑视觉 AI

摘要:本文深度解析 ViT(Vision Transformer)算法在视觉任务中的原理与实践,涵盖图像分类、目标检测、语义分割及医学影像分析四大领域。从理论出发,详细拆解图像分块、位置编码、Transformer 编码器等核心机制;通过 PyTorch 与 Timm 库实现模型构建、训练与优化,提供 CIFAR-10、Pascal VOC、Cityscapes 及医学数据集的完整代码示例。针对工业级部署,重点介绍模型量化、TensorRT 加速、Flask API 开发及 Docker 容器化方案。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1938

Redis——七、五大常用数据类型-Zset

Redis中Zset的介绍、常用命令和对应的数据结构

weixin_42601001的博客 445

弱小目标检测跟踪算法研究(5) 基于顶帽变换(Top_hat)算法的红外弱小目标检测之背景抑制

基于顶帽变换(Top_hat)算法的红外弱小目标检测之背景抑制1. 前言2. 顶帽变换(Top_hat)算法3. Matlab仿真4. 小结 1. 前言 红外图像中的弱小目标,目标属性包涵“弱"和“小’’两个方面:“弱’’是指目标在红外波长上所表现出来的强度,具体反映到所拍摄的红外图像上,就是指目标的灰度值;而“小’’是指目标的尺寸大小,也就是前面所述的成像面积很小,反映到红外图像上就是指目标所占的像素数目很少。 SPIE国际光学工程学会(Societyof Photo一0ptical Instrument

sinat_34897952的博客 5293

Redis五种数据结构之zset/SortedSet(集合) 常用函数及案例

Redis五种数据结构之zset(集合) 常用函数及案例 Redis五种数据结构分别是: String: Key-Value(set key value/get key) Hash: key-filedValue(Map,即key对应Map) List: 有序,可重复 Set: 无序,不可重复 SortedSet(zset): 有序,不可重复 ZSet常用函数及案例(可用于去重/交集/补集/并集) Zset是在set基础上,加一个score值。 之前set是k1 v1 v2 v3 现在是k1 sc

旗袍不开、怎么得胜? 3207

EMS案例:BMS传导发射超标整改案例

BMS作为新能源汽车的关键部件,其EMC性能直接影响整车的安全性和可靠性。本文通过一个实际的传导发射整改案例,详细展示了从问题定位、分析到解决方案实施的全过程。希望这些经验能够为从事类似产品设计的工程师提供有价值的参考,在未来的产品开发中避免类似问题,设计出更加可靠、稳定的BMS产品。EMC设计是一门结合理论与实践的艺术,只有通过不断积累经验、深入理解电磁场理论,并紧密结合实际应用场景,才能在复杂的电磁环境中设计出鲁棒性强的电子产品。

m0_56451176的博客 272

SpringBoot一次请求中缓存数据,请求结束就清除的4种方法,你会几种?

通过以上四种方法,你可以在 SpringBoot 的一次请求中缓存数据,并在请求结束后自动清除这些缓存数据。使用 ThreadLocal:适用于需要跨多个方法调用的缓存数据,灵活性高,但需要注意内存泄漏问题。使用 AOP:适用于全局性的缓存管理,代码更加优雅,但需要对 AOP 有一定的了解。使用 ServletRequestListener:适用于简单的请求生命周期管理,配置简单,但功能相对有限。使用 HttpServletRequest 的 setAttribute 和 getAttribute。

java专栏 1295

面试被问到Redis的Zset(Sorted Set)是什么?我懵了

有序集合提供了灵活的数据排序和检索机制,使其适用于多种场景,包括排行榜、任务调度等。Redis内部采用跳跃表和哈希表的结合实现,保证了对于插入、删除和查找的高效处理。使用有序集合可以简化系统的设计,减少不必要的复杂性,提高代码的可读性。有序集合对于实时的排名和排序非常合适,适用于需要即时展示数据的场景。在架构设计中,合理利用有序集合,可以有效提升系统的性能和响应速度,为用户提供更好的体验。这使得有序集合成为Java架构师工具箱中的一项强大工具。

骑着猪猪去旅行的博客 1833

CDR插件开发之CPG插件004 - 认识VGCore并编译生成你的第一个CPG文件

上篇文章中,讲到了使用VS2019编译CDR类型库 VGCoreAuto.tlb,编译后得到了vgcoreauto.tlh和vgcoreauto.tli两个文件。本文将对这两个文件说明,并演示通过标准的libid形式来导入CDR类型库,在这个过程中,穿插一些VS2019的使用技巧(删除目录、复制工程、打开项目或解决方案、修改解决方案名称、修改项目名称等),使读者循序渐进,逐步提高对VS2019工具的熟练程度,最后通过修改项目属性配置,生成第一个CPG文件。

Zebe 2984

【Redis篇】Set和Zset 有序集合基本使用

S。

m0_74823094的博客 1392

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

有序集合ZSET【Redis对象篇】

有序集合,Redis

席万里的博客 1027

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

redis zset 内部的实现原理

Redis对象 Redis对象由redisObject结构体表示。 1 2 3 4 5 6 7 typedef struct redisObject { unsigned type:4; // 对象的类型,包括 /* Object types */ unsigned e...

李意成的博客 2万+

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

redis学习——Sorted Set(Zset)数据类型

一、概述: Sorted Set(有序集合)和Set类型极为相似,它们都是字符串的集合,都不允许重复的成员出现在一个Set中。它们之间的主要差别是Sorted Set中的每一个成员都会有一个分数(score)与之关联,Redis正是通过分数来为集合中的成员进行从小到大的排序。然而需要额外指出的是,尽管Sorted Set中的成员必须是唯一的,但是分数(score)却是可以重复的。 (有序集合中的元素不可以重复,但是score 分数 可以重复,就和一个班里的同学学号不能重复,但考试成绩可以相同)。 在Sort

weixin_44096353的博客 1216

Redis数据类型之有序集合(sorted set)

ziplist为了节省内存,采用了紧凑的连续存储。所以在修改操作下并不能像一般的链表那么容易,需要从新分配新的内存,然后复制到新的空间。ziplist 是一个双向链表,可以在时间复杂度为 O(1) 从下头部、尾部进行 pop 或 push。新增或更新元素可能会出现连锁更新现象。不能保存过多的元素,否则查询效率就会降低。

huanloveqiang的博客 4252

四.4 Redis 五大数据类型/结构的详细说明/详细使用( zset 有序集合数据类型详解和使用)

在这个最后的篇章中,我要表达我对每一位读者的感激之情。你们的关注和回复是我创作的动力源泉,我从你们身上吸取了无尽的灵感与勇气。我会将你们的鼓励留在心底,继续在其他的领域奋斗。

weixin_61635597的博客 1583

redis学习之常用数据类型有序集合Zset(sorted set)

redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

qq_39746820的博客 1511

使用Redis的有序集合Zset实现排行榜功能

游戏中存在各种各样的排行榜,比如玩家的等级排名、分数排名等。玩家在排行榜中的名次是其实力的象征,位于榜单前列的玩家在虚拟世界中拥有无尚荣耀,所以名次也就成了核心玩家的追求目标。 一个典型的游戏排行榜包括以下常见功能: 能够记录每个玩家的分数; 能够对玩家的分数进行更新; 能够查询每个玩家的分数和名次; 能够按名次查询排名前N名的玩家; 能够查询排在指定玩家前后M名的玩家。 更进一步,上面的操作都需要在短时间内实时完成,这样才能最大程度发挥排行榜的效用。 由于一个玩家名次上升x位将会引起x+1位

骏马逸动,心随你动的博客 4060

Redis 有序集合 zset ( sorted set )

数组不便元素的插入、删除;第0层 1 >>>> 11 >>>> 21 >>>> 31 >>>> 41 >>>> 51 >>>> 61 >>>> NULL。第1层 1 >>>>>>>>>> 21 >>>>>>>>>> 41 >>>>>>>>>> 61 >>>> NULL。因为元素是有序的,所以你也可以很快的根据评分( score )或者次序( position )来获取一个范围的元素。第2层 1 >>>>>>>>>>>>>>>>>>>>>>> 41。

FairyKunKun的博客 1123

Redis数据类型——zset(sorted set)

简介 新的存储需求:数据排序有利于数据的有效展示,需要提供一种可以根据自身特征进行排序的方式 需要的存储结构:新的存储模型,可以保存可排序的数据 sorted_set类型:在set的存储结构基础上添加可排序字段 数据结构 它类似于 Java 的 SortedSet 和 HashMap 的结合体,一方面它是一个 set,保证了内部 value 的唯一性,另一方面它可以给每个 value 赋予一...

qq_43284141的博客 859

SpringBoot依赖之Spring Data Redis一有序集合Sorted Set

​ 通过上述步骤,我们成功在 Spring Boot 项目中使用 Spring Data Redis 实现了对 Redis 有序集合(Sorted Set)类型的操作。您可以使用这些方法来处理排行榜、定时任务和延时队列的数据结构需求。​ 这是基本的有序集合Sorted Set相关操作,还是要结合具体的业务选择具体的存储类型,这样对于项目后期的迭代具有事半功倍的效果。所以项目前期的技术选型也很重要,不容忽视。可以关注我一起学习,一起为程序员职业生涯蓄能。

ahauedu的专栏 1438

Redis数据类型——常用Redis有序集合Zset(sorted set)重点

参考http://redisdoc.com/ 1、set与zset区别: set的语法格式是 k1 v1 k2 v2 zset的语法格式是 k1 score1 v1 score2 v2 在set的基础上加一个score值 2、zadd key score member [[score member] [score member] …] 将一个或多个 member 元素及其 score 值加...

小志的博客 1219

redis-zset数据类型的常见指令(sorted set)

而我今天要说的是zset集合,set是无序的,zset是有序的,那zset是根据什么来排序的,在设计的时候就给zset的每一个元素member绑定了一个score分数,每一个member都有一个score,每一个score也都有一个member,可以通过member找到对应的score,也可以通过score找到对应的member,听起来像是key-value,但不是key-value,如果是key-value,通过key可以找到value,但是通过value,却不能找到key;为什么说是下标的呢?

分享所学,所见,所闻,期待遇见志同道合的人 935
上一篇: Redis系列(五)、数据类型之无序集合Set
下一篇: Redis系列(七)、常用key命令
王义凯_Rick
王义凯_Rick 领域专家: 大数据技术领域 领域专家: 大数据技术领域
博客等级 码龄14年 858粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王义凯_Rick

遇见即是缘,路过就给个评论吧~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值