【Redis】 关于 Redis 集合类型

news2024/11/15 23:47:15

文章目录

  • 🍃前言
  • 🌳普通命令
    • 🚩sadd
    • 🚩smembers
    • 🚩sismember
    • 🚩scard
    • 🚩spop
    • 🚩smove
    • 🚩srem
  • 🌲集合间操作
    • 🚩sinter
    • 🚩sinterstore
    • 🚩sunion
    • 🚩sunionstore
    • 🚩sdiff
    • 🚩sdiffstore
  • 🎍集合类型的内部编码
  • 🍀集合类型的使用场景
  • ⭕总结

🍃前言

集合类型是用来保存多个字符串类型的元素的,但和列表类型是不同的,集合中

  1. 元素之间是⽆序的
  2. 元素不允许重复。

⼀个集合中最多可以存储 2^32 - 1 个元素。Redis 除了⽀持集合内的增删查改操作,同时还⽀持多个集合取交集、并集、差集,合理地使⽤好集合类型,能在实际开发中解决很多问题

🌳普通命令

🚩sadd

将⼀个或者多个元素添加到 set 中。注意,重复的元素⽆法添加到 set 中。

语法:

sadd key member [member ...]

时间复杂度:

  • O(1)

返回值:

  • 本次添加成功的元素个数

在这里插入图片描述

🚩smembers

获取⼀个 set 中的所有元素,注意,元素间的顺序是⽆序的。

语法:

semembers key

时间复杂度:

  • O(N)

返回值:

  • 所有元素的列表。

在这里插入图片描述

🚩sismember

判断⼀个元素在不在 set 中。

语法:

sismember key member

时间复杂度:

  • O(1)

返回值:

  • 1 表⽰元素在 set 中。0 表⽰元素不在 set 中或者 key 不存在。

在这里插入图片描述

🚩scard

获取⼀个 set 的基数(cardinality),即 set 中的元素个数。

语法:

scard key

时间复杂度:

  • O(1)

返回值:

  • set 内的元素个数。

在这里插入图片描述

🚩spop

从 set 中删除并返回⼀个或者多个元素。注意,由于 set 内的元素是⽆序的,所以取出哪个元素实际是未定义⾏为,是随机的

语法:

spop key [count]

时间复杂度:

  • O(N), n 是 count

返回值:

  • 取出的元素。

在这里插入图片描述

🚩smove

将⼀个元素从源 set 取出并放⼊⽬标 set 中。

语法:

smove source destination member

时间复杂度:

  • O(1)

返回值:

  • 1 表⽰移动成功,0 表⽰失败

在这里插入图片描述

🚩srem

将指定的元素从 set 中删除。

语法:

srem key member [member ...]

时间复杂度:

  • O(N), N 是要删除的元素个数.

返回值:

  • 本次操作删除的元素个数。

在这里插入图片描述

🌲集合间操作

对于集合,我们有三种基本操作,分别为交集、并集、差集

🚩sinter

获取给定 set 的交集中的元素

语法:

sinter key [key ...]

时间复杂度:

  • O(N * M), N 是最⼩的集合元素个数. M 是最⼤的集合元素个数.

返回值:

  • 交集的元素。

在这里插入图片描述

🚩sinterstore

获取给定 set 的交集中的元素并保存到⽬标 set 中。

语法:

sinterstore destination key [key ...]

时间复杂度:

  • O(N * M), N 是最⼩的集合元素个数. M 是最⼤的集合元素个数.

返回值:

  • 交集的元素个数

在这里插入图片描述

🚩sunion

获取给定 set 的并集中的元素。

语法:

sunion key [key ...]

时间复杂度:

  • O(N), N 给定的所有集合的总的元素个数.

返回值:

  • 并集的元素

在这里插入图片描述

🚩sunionstore

获取给定 set 的并集中的元素并保存到⽬标 set 中。

语法:

sunionstore destination key [key ...]

时间复杂度:

  • O(N), N 给定的所有集合的总的元素个数.

返回值:

  • 并集的元素个数。
    在这里插入图片描述

🚩sdiff

获取给定 set 的差集中的元素

语法:

sdiff  key [key ...]

时间复杂度:

  • O(N), N 给定的所有集合的总的元素个数.

返回值:

  • 差集的元素

在这里插入图片描述

🚩sdiffstore

获取给定 set 的差集中的元素并保存到⽬标 set 中

语法:

sdiffstore destination key [key ...]

时间复杂度:

  • O(N), N 给定的所有集合的总的元素个数.

返回值:

  • 差集的元素个数

在这里插入图片描述

🎍集合类型的内部编码

集合类型的内部编码有两种:

  • intset(整数集合):当集合中的元素都是整数并且元素的个数⼩于set-max-intset-entries 配置(默认 512 个)时,Redis 会选⽤ intset 来作为集合的内部实现,从⽽减少内存的使⽤。
  • hashtable(哈希表):当集合类型⽆法满⾜ intset 的条件时,Redis 会使⽤ hashtable 作为集合的内部实现。

🍀集合类型的使用场景

集合类型⽐较典型的使⽤场景是标签(tag)。

例如 A ⽤⼾对娱乐、体育板块⽐较感兴趣,B⽤⼾对历史、新闻⽐较感兴趣,这些兴趣点可以被抽象为标签。有了这些数据就可以得到喜欢同⼀个标签的⼈,以及⽤⼾的共同喜好的标签,这些数据对于增强⽤⼾体验和⽤⼾黏度都⾮常有帮助。

例如⼀个电⼦商务⽹站会对不同标签的⽤⼾做不同的产品推荐

⭕总结

关于《【Redis】 关于 Redis 集合类型》就讲解到这儿,感谢大家的支持,欢迎各位留言交流以及批评指正,如果文章对您有帮助或者觉得作者写的还不错可以点一下关注,点赞,收藏支持一下

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Serpens3通过 运行脚本,向python传参

def main(a):print(a)#pid等变量名,需要和serpens中同名 main(pid)若.py文件要运行更多的逻辑,可以传参定义执行哪个函数 如何将执行完成的python返回参数给serpens3

2024年湖北水平能力测试能搞定吗?

武汉中级职称报名正式高一段落,意味着今年武汉市中级职称报名除开东湖高新区之外,其余地方都已经正式截止了,那么接下来大家都在准备6月中下旬的水平能力测试考试。 水平能力测试分为两种:面试答辩或者笔试机考试卷,面…

嵌入式进阶——温湿度传感器

🎬 秋野酱:《个人主页》 🔥 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 DHT11温湿度模块原理图官方参考电路数据线通讯协议单总线传送数据位定义数据格式:校验位数据定义 协议实现 DHT11温湿度模块 DHT1…

哇!数据中台竟是企业数字化转型的关键力量!

在当今数字化浪潮席卷的时代,数据中台正成为企业实现数字化转型的关键力量。那么,究竟什么是数据中台呢?它乃是一种持续让企业数据活跃起来的机制,能够将企业内各部分数据汇聚至一个平台,达成数据的统一化管理。 数据中…

idea中快速找到当前git地址

idea中快速找到当前git地址 然后双击就可以看到地址了

apexcharts数据可视化之饼图

apexcharts数据可视化之饼图 有完整配套的Python后端代码。 本教程主要会介绍如下图形绘制方式: 基础饼图单色饼图图片饼图 基础饼图 import ApexChart from react-apexcharts;export function SimplePie() {// 数据序列const series [44, 55, 13, 43, 22]// …

IEEE Account个人姓名修改方法,5分钟解决!

一、背景 之前在注册IEEE Account时,最基础的first name是名,last name是姓都搞错了,太粗心了。然后发现IEEE账户的姓名不能随便修改,需要联系IEEE support center,然后经过一系列探索,发现下面两种方法可…

微软如何打造数字零售力航母系列科普11 - 什么是Microsoft Fabric中的数据工程?

什么是Microsoft Fabric中的数据工程? 目录 1. Lakehouse(湖边小屋) 2. Apache Spark Job Definition (作业定义) 3. Notebook(笔记本) 4. Data Pipeline (数据管道) Microsoft Fabric中的数据工程使用户能够设计、构建和维护基础架构和系统,使其组…

电机控制系列模块解析(24)—— 飞车转速跟踪

转速跟踪启动:又名顺风&&逆风启动、或者飞车启动、或者启动前转速检测。应用背景见附录。 转速跟踪 也可以理解为 对正在高速运行的电机 进行初始位置辨识。 一、转速跟踪方案 转速跟踪是电机控制中的一项关键技术,尤其在变频驱动、伺服系统等…

WebGIS 智慧城市三维可视化综合管控

智慧城市可视化建设不仅提升了城市管理的科技含量和效率,还促进了城市可持续发展,提升了居民的生活质量。随着技术的不断发展和应用,智慧城市可视化建设将会更加丰富和完善,为城市发展带来更加广阔的前景。 图扑应用自研 HT for W…

推荐一个实用的ETF短线交易策略

就短线交易策略来说,ETF是一种很好的工具,流动性充足,交易成本低廉,没有印花税,买卖一个回合的手续费0.02%就够了,甚至更低,而股票卖出时,光印花税就要收0.1%,买卖一个回…

MyBatis多数据源配置与使用,基于ThreadLocal+AOP

导读 MyBatis多数据源配置与使用其一其二1. 引依赖2. 配置文件3. 编写测试代码4. 自定义DynamicDataSource类5. DataSourceConfig配置类6. AOP与ThreadLocal结合7. 引入AOP依赖8. DataSourceContextHolder9. 自定义注解UseDB10. 创建切面类UseDBAspect11. 修改DynamicDataSourc…

Spark Sql写代码方式(yarn)以及 spark sql整合hive详解

引入部分:通常我们在IDEA中写spark代码中如果设置了loacl参数,基本都是在IDEA本地运行,不会提交到 standalone或yarn上运行,在前几篇文章中写的大多数都是该种形式的spark代码,但也写到了如何将spark代码提交到standal…

如何防止锂电池反充

锂电池通常用于许多需要备用电源的设备应用中,例如实时时钟 (RTC) 和存储设备。当锂电池不是电路中的单一电源时,如果电池意外连接到可为电池充电的电源,则存在火灾或爆炸的风险。本应用笔记提供了在备用电源开关电路中连接锂电池所需的信息&…

springboot实现多开发环境匹配置

首先logbok-spring.xml里面的内容 <?xml version"1.0" encoding"UTF-8"?> <configuration><!-- 开发、测试环境 --><springProfile name"dev,test"><include resource"org/springframework/boot/logging/log…

MouseBoost Pro for Mac v3.4.7 鼠标右键助手 安装教程【支持M芯片】

MouseBoost Pro for Mac v3.4.7 鼠标右键助手 安装教程【支持M芯片】 原文地址&#xff1a;https://blog.csdn.net/weixin_48311847/article/details/139201501

Midjourney进阶篇 | 10大高阶风格,内附关键词

MJ绘画10大高阶风格&#xff0c;内附关键词&#xff01; 前言迪士尼风格 Disney style水彩画 watercolor paint波普艺术 pop art全息色彩风格 Holographic电影风格 film still二次元风格 Anime style赛博朋克风格 cyberpunk style极简主义风格 Minimalist design提示词&#xf…

【权威出版】2024年电气工程与传感检测技术国际会议(EESDT 2024)

2024年电气工程与传感检测技术国际会议 2024 International Conference on Electrical Engineering and Sensing Detection Technology 【1】会议简介 2024年电气工程与传感检测技术国际会议即将召开&#xff0c;这是一场汇聚全球电气工程与传感检测技术领域精英的学术盛会。 本…

832. 翻转图像 - 力扣

1. 题目 给定一个 n x n 的二进制矩阵 image &#xff0c;先 水平 翻转图像&#xff0c;然后 反转 图像并返回 结果 。 水平翻转图片就是将图片的每一行都进行翻转&#xff0c;即逆序。 例如&#xff0c;水平翻转 [1,1,0] 的结果是 [0,1,1]。 反转图片的意思是图片中的 0 全部被…

AT32F415 使用embedded studio笔记

由于Embedded Studio还没有支持雅特力的支持包&#xff0c;因此通过MDK的工程无法直接导入到embedded studio中。需要自己新建一个工程。 新建的时候是可以选择雅特力的单片机的。 工程新建好后&#xff0c;默认会包含3个文件。如下图所示。其中两个汇编文件的作用是之前MDK的…