【Redis】set 和 zset 类型的介绍和常用命令

1. set

1.1 介绍

set 类型和 list 不同的是,存储的元素是无序的,并且元素不允许重复,Redis 除了支持集合内的增删查改操作,还支持多个集合取交集,并集,差集

1.2 常用命令

命令

介绍

时间复杂度

sadd key element [element ...]

将一个或多个元素添加到指定的集合中

O (k),k 是要添加的元素个数

srem key element [element ...]

从指定集合中移除一个或多个元素

O (k),k 是要移除的元素个数

scard key

获取指定集合中的元素数量

O (1)

sismember key element

判断指定元素是否存在于集合中

O (1)

srandmember key [count]

从指定集合中随机返回一个或多个元素

O (n),n 是count的值

spop key [count]

从指定集合中随机移除并返回一个或多个元素

O (n),n 是count的值。

smembers key

获取指定集合中的所有元素。

O (k),k 是集合中的元素个数

sinter key [key ...] sinterstore

求多个集合的交集

O (m * k),k 是几个集合中元素最小的个数,m 是参与交集计算的键个数

sunion key [key ...] sunionstore

求多个集合的并集

O (k),k 是多个集合的元素个数总和

sdiff key [key ...] sdiffstore

求多个集合的差集

O (k),k 是多个集合的元素个数总和

1.3 内部编码

intset:当集合中的所有元素都是整数,并且元素数量较少时会使用intset编码来存储集合

hashtable:当集合中的元素不满足intset的条件,会使用hashtable编码来存储集合

1.4 应用场景

用户标签:为用户、商品等实体打标签,每个实体对应一个 Set,标签作为 Set 中的元素。

去重:在处理大量数据时,经常需要去除重复元素。例如在日志分析中,记录用户的访问 IP 地址,使用 Set 可以自动对 IP 进行去重,保证每个 IP 只被记录一次。

2. zset

2.1 介绍

zset 保留了 set 集合中不能有重复成员的特点,与之不同的是,zset 中的元素是有序的,集合中的每一个元素都有一个唯一的浮点类型的分数(score)与之关联,依次来进行排序,使得有序集合中的元素可以维护有序性,虽然集合中的元素是不能重复的,但是分数允许重复。

2.2 常用命令

命令

介绍

时间复杂度

zadd key score member [score member ...]

向有序集合中添加一个或多个成员,以及成员对应的分值

O (k * log (n)),k 是添加成员的个数,n 是当前有序集合的元素个数

zcard key

获取有序集合的成员数量

O (1)

zscore key member

获取有序集合中指定成员的分值

O (1)

zrank key member

返回有序集合中指定成员的排名(从 0 开始,按分值从小到大排序)

O (log (n)),n 是当前有序集合的元素个数

zrevrank key member

返回有序集合中指定成员的排名(从 0 开始,按分值从大到小排序)

O (log (n)),n 是当前有序集合的元素个数

zrem key member [member ...]

移除有序集合中的一个或多个成员

O (k * log (n)),k 是删除成员的个数,n 是当前有序集合的元素个数

zincrby key increment member

为有序集合中指定成员的分值加上增量 increment

O (log (n)),n 是当前有序集合的元素个数

zrange key start end [withscores]

按分值从小到大返回有序集合中指定区间内的成员

O (k + log (n)),k 是获取成员的个数,n 是当前有序集合的元素个数

zrevrange key start end [withscores]

按分值从大到小返回有序集合中指定区间内的成员

O (k + log (n)),k 是获取成员的个数,n 是当前有序集合的元素个数

zrangebyscore key min max [withscores]

按分值从小到大返回有序集合中指定分值区间内的成员

O (k + log (n)),k 是获取成员的个数,n 是当前有序集合的元素个数

zrevrangebyscore key max min [withscores]

按分值从大到小返回有序集合中指定分值区间内的成员

O (k + log (n)),k 是获取成员的个数,n 是当前有序集合的元素个数

zcount key min max

计算有序集合中指定分值区间内成员的数量

O (log (n)),n 是当前有序集合的元素个数

zremrangebyrank key start end

按排名删除有序集合中指定区间内的成员

O (k + log (n)),k 是获取成员的个数,n 是当前有序集合的元素个数

zremrangebyscore key min max

按分值删除有序集合中指定分值区间内的成员

O (k + log (n)),k 是获取成员的个数,n 是当前有序集合的元素个数

zinterstore destination numkeys key [key ...]

计算给定的一个或多个有序集合的交集,并将结果存储在新的有序集合 destination 中

O (n * k) + O (m * log (m)),n 是输入集合最小的元素个数,k 是集合个数,m 是目标集合元素个数

zunionstore destination numkeys key [key ...]

计算给定的一个或多个有序集合的并集,并将结果存储在新的有序集合 destination 中

O (n) + O (m * log (m)),n 是输入集合总元素个数,m 是目标集合元素个数
 

2.3 内部编码

ziplist:如果有序集合中的元素个数较少,或者单个元素体积较小,就使用 ziplist 存储

skiplist:如果元素个数较多或者单个元素体积较大,使用 skiplist 存储

2.4 应用场景

基于 zset 有序的特点,可以用到很多场景中:

  1. 排行榜系统:比如游戏中的玩家排行榜,以玩家的积分作为分值,玩家昵称作为成员,能按分值(积分)对玩家进行排序,快速获取排名靠前或特定区间的玩家信息;视频平台的视频热度排行榜,以视频的播放量、点赞数等综合指标作为分值,视频 ID 作为成员,展示热门视频。
  2. 计分系统:在在线考试系统中,以考生的考试成绩作为分值,考生 ID 作为成员,可方便统计成绩排名、获取特定分数段的考生信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/963404.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[SAP ABAP] 静态断点的使用

在 ABAP 编程环境中,静态断点通过关键字BREAK-POINT实现,当程序执行到这一语句时,会触发调试器中断程序的运行,允许开发人员检查当前状态并逐步跟踪后续代码逻辑 通常情况下,在代码的关键位置插入静态断点可以帮助开发…

从TinyZero的数据与源码来理解DeepSeek-R1-Zero的强化学习训练过程

1. 引入 TinyZero(参考1)是伯克利的博士生复现DeepSeek-R1-Zero的代码参仓库,他使用veRL来运行RL强化学习方法,对qwen2.5的0.5B、1.5B、3B等模型进行训练,在一个数字游戏数据集上,达到了较好的推理效果。 …

深度卷积神经网络实战无人机视角目标识别

本文采用深度卷积神经网络作为核心算法框架,结合PyQt5构建用户界面,使用Python3进行开发。YOLOv8以其高效的实时检测能力,在多个目标检测任务中展现出卓越性能。本研究针对无人机目标数据集进行训练和优化,该数据集包含丰富的无人…

初级数据结构:栈和队列

一、栈 (一)、栈的定义 栈是一种遵循后进先出(LIFO,Last In First Out)原则的数据结构。栈的主要操作包括入栈(Push)和出栈(Pop)。入栈操作是将元素添加到栈顶,这一过程中&#xf…

数据结构 前缀中缀后缀

目录 前言 一,前缀中缀后缀的基本概念 二,前缀与后缀表达式 三,使用栈实现后缀 四,由中缀到后缀 总结 前言 这里学习前缀中缀后缀为我们学习树和图做准备,这个主题主要是对于算术和逻辑表达式求值,这…

笔灵ai写作技术浅析(三):深度学习

笔灵AI写作的深度学习技术主要基于Transformer架构,尤其是GPT(Generative Pre-trained Transformer)系列模型。 1. Transformer架构 Transformer架构由Vaswani等人在2017年提出,是GPT系列模型的基础。它摒弃了传统的循环神经网络(RNN)和卷积神经网络(CNN),完全依赖自…

专业的定制版软件,一键操作,无限使用

今天给大家介绍一个专业的PDF转word的小软件,软件只有5.5M。非常小,而且没有文档大小的限制,可以随意使用。 PDFtu PDF转word 软件第一次使用需要安装一下。 安装好之后,我们就能在桌面找到对应的图标,打开就能直接使…

QGIS系列22-如何提取不规则多边形的中心经纬度

今天我们来学习一下啊如何通过QGIS提取不规则多边形的中心经纬度 1、首先我们把不规则的多边形图形导入进QGIS里面去 2、现在打开的图层是不可以编辑的,因此我们还需要转换成可编辑状态,具体是选择图层,右键点击,选择切换编辑模式…

word2vec 实战应用介绍

Word2Vec 是一种由 Google 在 2013 年推出的重要词嵌入模型,通过将单词映射为低维向量,实现了对自然语言处理任务的高效支持。其核心思想是利用深度学习技术,通过训练大量文本数据,将单词表示为稠密的向量形式,从而捕捉单词之间的语义和语法关系。以下是关于 Word2Vec 实战…

数据库安全管理中的权限控制:保护数据资产的关键措施

title: 数据库安全管理中的权限控制:保护数据资产的关键措施 date: 2025/2/2 updated: 2025/2/2 author: cmdragon excerpt: 在信息化迅速发展的今天,数据库作为关键的数据存储和管理中心,已经成为了企业营运和决策的核心所在。然而,伴随着数据规模的不断扩大和数据价值…

【漫话机器学习系列】076.合页损失函数(Hinge Loss)

Hinge Loss损失函数 Hinge Loss(合页损失),也叫做合页损失函数,广泛用于支持向量机(SVM)等分类模型的训练过程中。它主要用于二分类问题,尤其是支持向量机中的优化目标函数。 定义与公式 对于…

openmv的端口被拆分为两个 导致电脑无法访问openmv文件系统解决办法 openmv USB功能改动 openmv驱动被更改如何修复

我之前误打误撞遇到一次,直接把openmv的全部端口删除卸载然后重新插上就会自动重新装上一个openmv端口修复成功,大家可以先试试不行再用下面的方法 全部卸载再重新插拔openmv 要解决OpenMV IDE中出现的两个端口问题,可以尝试以下步骤&#x…

洛谷P1403 [AHOI2005] 约数研究

题目链接:P1403 [AHOI2005] 约数研究 - 洛谷 | 计算机科学教育新生态 题目难度:普及一 题目分析:本题很明显是要你求从i到n的质因数个数之和,如果采用暴力肯定是超时的,故我的想法是采用埃氏筛法来求时间复杂度为&…

elasticsearch8.15 高可用集群搭建(含认证Kibana)

文章目录 1.资源配置2.系统参数优化3.JDK17安装4.下载&安装ES 8.155.生成ES的证书(用于ES节点之间进行安全数据传输)6.修改ES 相关配置文件7.创建es用户并启动8.配置ES的账号和密码(用于ES服务端和客户端)9.下载和安装Kibana10.编辑Kibana配置文件11.启动Kiabana12.访问Kia…

MATLAB中的IIR滤波器设计

在数字信号处理中,滤波器是消除噪声、提取特征或调整信号频率的核心工具。其中,无限脉冲响应(IIR)滤波器因其低阶数实现陡峭滚降的特性,被广泛应用于音频处理、通信系统和生物医学工程等领域。借助MATLAB强大的工具箱&…

数据结构:优先级队列—堆

一、优先级队列 1、优先级队列概念 优先级队列,听名字我们就知道他是一种队列,队列在前面我们已经学习过了,它是一种先进先出的数据结构,但是在特殊的情况下,我们我们队列中元素是带有一定优先级的,它需要…

北大:三阶段学习优化多模态推理问答

📖标题:ReasVQA: Advancing VideoQA with Imperfect Reasoning Process 🌐来源:arXiv, 2501.13536 🌟摘要 🔸视频问答(VideoQA)是一项具有挑战性的任务,需要理解视频中…

从零开始:用Qt开发一个功能强大的文本编辑器——WPS项目全解析

文章目录 引言项目功能介绍1. **文件操作**2. **文本编辑功能**3. **撤销与重做**4. **剪切、复制与粘贴**5. **文本查找与替换**6. **打印功能**7. **打印预览**8. **设置字体颜色**9. **设置字号**10. **设置字体**11. **左对齐**12. **右对齐**13. **居中对齐**14. **两侧对…

Jason配置环境变量

jason官网 https://jason-lang.github.io/ https://github.com/jason-lang/jason/releases 步骤 安装 Java 21 或更高版本 安装 Visual Studio Code 根据操作系统,请按照以下具体步骤操作 视窗 下载 Jason 的最新版本,选择“jason-bin-3.3.0.zip”…

机器学习--概览

一、机器学习基础概念 1. 定义 机器学习(Machine Learning, ML):通过算法让计算机从数据中自动学习规律,并利用学习到的模型进行预测或决策,而无需显式编程。 2. 与编程的区别 传统编程机器学习输入:规…