有序集合(ZSET):

可以用作相关有序集合相对于哈希、列表、集合来说会有一点点陌生,但既然叫有序集合,那么它和集合必然有着联系,它保留了集合不能有重复成员的特性,但不同的是,有序集合中的元素可以排序。但是它和列表使用索引下标作为排序依据不同的是,它给每个元素设置一个分数( score)作为排序的依据。

有序集合中的元素不能重复,但是score可以重复,就和一个班里的同学学号不能重复,但是考试成绩可以相同。

有序集合提供了获取指定分数和元素范围查询、计算成员排名等功能,合理的利用有序集合,能帮助我们在实际开发中解决很多问题。

使用场景

有序集合比较典型的使用场景就是排行榜系统。例如视频网站需要对用户上传的视频做排行榜,榜单的维度可能是多个方面的:按照时间、按照播放数量、按照获得的赞数。

补充】但是实际zrank进行排名,是异步定时执行的,不会进行每秒进行算一次,因为算一次消耗很大。

集合内操作命令
zadd添加成员

返回结果代表成功添加成员的个数

要注意:

zadd命令还有四个选项nx、xx、ch、incr 四个选项

nx: member必须不存在,才可以设置成功,用于添加。

xx: member必须存在,才可以设置成功,用于更新。

ch: 返回此次操作后,有序集合元素和分数发生变化的个数

incr: 对score做增加,相当于后面介绍的zincrby

zcard 计算成员个数

zscore 计算某个成员的分数常用

如果成员不存在则返回nil

zrank计算成员的排名常用

zrank是从分数从低到高返回排名

zrevrank反之

很明显,排名从0开始计算。

zrem 删除成员

允许一次删除多个成员。

返回结果为成功删除的个数。

zincrby 增加成员的分数

zrange和zrevrange返回指定排名范围的成员常用

有序集合是按照分值排名的,zrange是从低到高返回,zrevrange反之。如果加上

withscores选项,同时会返回成员的分数

zrangebyscore返回指定分数范围的成员

zrangebyscore key min max [withscores] [limit offset count]

zrevrangebyscore key max min [withscores][limit offset count]

其中zrangebyscore按照分数从低到高返回,zrevrangebyscore反之。例如下面操作从低到高返回200到221分的成员,withscores选项会同时返回每个成员的分数。

同时min和max还支持开区间(小括号)和闭区间(中括号),-inf和+inf分别代表无限小和无限大:

zcount 返回指定分数范围成员个数

zcount key min max

zremrangebyrank 按升序删除指定排名内的元素

zremrangebyrank key start end

zremrangebyscore 删除指定分数范围的成员

zremrangebyscore key min max

实际案例

zset计算平均分:

当存在多个集合时候,需要计算不同集合同名元素的平均分时候,使用以下操作:

//取一个新集合,将zset1和zset2的值存到zsetavg中,权重比例是对半开

Zinterstore zsetavg 2 zset1 zset2 weights 0.5 0.5

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/90892.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/90892.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/90892.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mistral AI开源 Magistral-Small-2507

宣布Magistral——Mistral AI推出的首款推理模型,专精于垂直领域、具备透明化特性与多语言推理能力。 最优秀的人类思维并非线性——它穿梭于逻辑、洞见、不确定性与发现之间。推理型语言模型让我们得以将复杂思考和深度理解交由AI增强或代劳,提升了人类…

【Kotlin】如何实现静态方法?(单例类、伴生对象、@JvmStatic)

静态方法 静态方法(类方法):不需要创建实例就可以调用(直接通过类名调用)的方法 Java 中的静态方法(static) public class Util {public static void doAction() {//...} }调用:Util…

SQL Schema 和Pandas Schema什么意思

在数据处理和分析领域,SQL Schema 和 Pandas Schema 分别指的是在不同数据处理环境中数据的结构定义,以下为你详细介绍:SQL Schema含义SQL Schema(模式)是数据库对象的一个逻辑容器,它定义了数据库中表、视…

机器学习(一)KNN,K近邻算法(K-Nearest Neighbors)

💡 建议初学者掌握KNN作为理解其他复杂算法(如SVM、决策树、神经网络)的基石。K近邻算法(K-Nearest Neighbors, KNN)详解:原理、实践与优化K近邻算法(K-Nearest NeighboKrs,简称KNN&…

Qt 多线程数据库操作优化

在多线程应用中,数据库操作往往是性能瓶颈与稳定性风险的高发区。当多个线程同时读写数据库时,若处理不当,轻则出现查询卡顿、事务冲突,重则导致数据错乱、连接泄漏甚至程序崩溃。Qt作为跨平台框架,提供了QSql系列类支…

Qt 状态机框架:复杂交互逻辑的处理

Qt状态机框架(Qt State Machine Framework)是一个强大的工具,用于简化复杂的交互逻辑和状态管理。它基于UML状态图概念,提供了声明式的方式来定义对象行为,特别适合处理具有多种状态和转换的场景(如GUI交互…

【docker】DM8达梦数据库的docker-compose以及一些启动踩坑

摘要:本文介绍了通过docker-compose配置启动达梦数据库(DM8)的方法。配置包括容器镜像、端口映射、数据卷挂载以及关键环境变量设置(如字符集、大小写敏感等)。也说明了启动过程可能遇到的一些问题。通过docker-compose启动达梦数据库可以按照…

服务器中的防火墙设置需要打开吗

服务器中的防火墙属于是一种保护计算机网络不会受到未经授权的网络设备所访问的技术手段,防火墙还有着将内部网络和外部网络进行隔离的功能,在网络之间创建安全屏障,以此来保护网络中数据的安全。防火墙是一种网络安全系统,可以帮…

Java项目:基于SSM框架实现的社区团购管理系统【ssm+B/S架构+源码+数据库+毕业论文+答辩PPT+远程部署】

摘 要 使用旧方法对社区团购信息进行系统化管理已经不再让人们信赖了,把现在的网络信息技术运用在社区团购信息的管理上面可以解决许多信息管理上面的难题,比如处理数据时间很长,数据存在错误不能及时纠正等问题。 这次开发的社区团购系统有…

介绍一下static关键字

在Java中,被static修饰的成员称为静态成员,static关键字可以用来修饰方法或者成员变量,且被static修饰的方法或者成员变量属于类方法或者类属性,也就是说被static修饰的方法或者成员变量不是单独存储在某一个对象的空间&#xff0…

【Java学习|黑马笔记|Day23】网络编程、反射、动态代理

【DAY23】 文章目录【DAY23】一.网络编程1)三要素1.1)IPInetAddress类的使用1.2)端口号1.3)协议2.1)UDP协议发送数据2.2)UDP协议接收数据2.3)UDP的三种通信方式3.1)TCP协议的发送和接…

【Zephyr】Window下的Zephyr编译和使用

工具下载 参考文档(Getting Started Guide — Zephyr Project Documentation)中介绍,可以直接通过winget下载: winget download Kitware.CMake Ninja-build.Ninja oss-winget.gperf python Git.Git oss-winget.dtc wget 7zip.7z…

图论(BFS)构造邻接表(运用队列实现搜索)

码蹄集OJ-夏日漫步 #include<bits/stdc.h> using namespace std; int n; int a[200010],dis[200010],qaq[1000010]; vector<int>son[200010]; int que[200010]; int main( ) {memset(qaq,-1,sizeof(qaq));memset(dis,-1,sizeof(dis));cin>>n;for(int i1;i…

vue怎么实现导入excel表功能

<el-uploadref"upload":action"aaa":on-change"importProject"name"excelFile"multiple:auto-upload"false":show-file-list"false"><el-button type"warning">导入</el-button><…

Linux DNS解析3 -- DNS解析代理配置使用

当网关设备配置了 /etc/hosts 文件时&#xff0c;确实可以为终端设备提供自定义DNS解析功能&#xff0c;但具体效果取决于网关的DNS代理服务配置。下面详细解释其工作原理和限制&#xff1a; 一、/etc/hosts 文件的作用 /etc/hosts 是本地静态域名解析文件&#xff0c;格式为&a…

历史版本的vscode下载地址

我有点厌恶vscode越来越臃肿的体积&#xff0c;也不需要层出不穷的新功能&#xff0c;于是网上找寻历史版本。 首先是这个页面&#xff1a;https://code.visualstudio.com/updates &#xff0c;但最多只显示两年&#xff0c;更早的就要手工修改地址栏&#xff0c;我试了最早的…

如何规范化项目执行

要实现项目执行的规范化&#xff0c;应做到以下几点&#xff1a;制定详细的项目执行计划、明确项目团队角色职责、建立高效沟通与协调机制、实施全面的质量与风险管理、采用合适的项目管理工具。其中&#xff0c;尤其重要的是明确项目团队角色职责&#xff0c;通过构建清晰的责…

【Rust异步】async和await异步编程实战:高并发任务处理全解析

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

在Linux上使用DuckCP实现从csv文件汇总数据到SQLite数据库的表

从pypi网站Duckcp页面下载duckcp-0.1.1-py3-none-any.whl 一开始用的Python 3.11.2环境。 继续沿用上文打补丁的方法&#xff0c;得到一个支持python3.11.1的安装包。 因为缺少zip压缩工具&#xff0c;使用python程序来完成对修改后文件的重新压缩。 import os import zipfile…

基于深度学习的图像分类:使用EfficientNet实现高效分类

前言 图像分类是计算机视觉领域中的一个基础任务&#xff0c;其目标是将输入的图像分配到预定义的类别中。近年来&#xff0c;深度学习技术&#xff0c;尤其是卷积神经网络&#xff08;CNN&#xff09;&#xff0c;在图像分类任务中取得了显著的进展。EfficientNet是一种新型的…