【Redis】Set类型的常用命令与应用场景

news2024/11/19 2:39:45

目录

1.命令小结

2.命令解析

3.编码方式与应用场景


 

1.命令小结

(1)set的特点

1)set中存放的数据也都是String类型

2)set集合中的元素是无须的

3)set集合中的元素是唯一的,不可重复

(2)命令大全

命令含义时间复杂度
sadd key element [element … ]向set添加一个获多个元素
O(k),k 是元素个数
smembers key获取集合的所有元素
O(k),k 是元素个数
sismember key element判断一个元素是否在set中O(1)
scard key求集合中元素个数O(1)
spop key [count]随机删除并获取元素
O(n),n 是count
srandmember key [count]随机获取元素
O(k),n 是count
smove sourse destination member将元素从一个集合中移到另一个集合O(n),n 是count
srem key member [member …]移除指定元素O(N)
sinter key1 [key2 … ]求交集
O(m * k),k是几个集合中元素最小的个数,m是键个数
sinterstore destination key1 [key2 …]求交集并放入指定集合中
O(m * k),k是几个集合中元素最小的个数,m是键个数
sunion key1 [key2 … ]求并集O(k),k是多个集合的元素个数总和
sunionstore destination key1 [key2 …]求并集并放入指定集合中O(k),k是多个集合的元素个数总和
sdiff  key1 [key2 … ]求差集
O(k),k是多个集合的元素个数总和
sdffstore destination key1 [key2 …]求差集并放入指定集合中
O(k),k 是多个集合的元素个数总和
2.命令解析

(1)sadd

1)语法:sadd key member [member … ]

2)含义:将一个或者多个元素添加到key对应的set集合中。重复元素无法添加进去

3)返回值:本次添加成功的元素个数

4)时间复杂度:O(1)

(2)smembers

1)语法:smembers key

2)含义:获取key对应的set集合列表

3)返回值:返回set中的所有元素,顺序随机

4)时间复杂度:O(N),N为元素个数

(3)sismember

1)语法:sismember key member 

2)含义:判断一个元素是否存在key对应的set中

3)返回值:1表示存在,0表示key或者member不存在

4)时间复杂度:O(1)

(4)scard

1)语法:scard key

2)含义:获取key对应集合中的元素个数

3)返回值:返回set中的元素个数

4)时间复杂度:O(1)

(5)spop

1)语法:spop key [count]

2)含义:随机删除set中的元素,不写count默认删除一个;指定count则随机删除count个

3)返回值:删除的元素

4)时间复杂度:O(N),N是count

(6)srandmember

1)语法:srandmember key [count]

2)含义:随机从key对应的set集合中取出一个或者count个元素

3)返回值:返回取出的元素

4)时间复杂度:O(N),N是count

(7)smove

1)语法:smove source destination member

2)含义:将member元素从source对应的集合中取出放入destination中

3)返回值:1表示移动成功,0表示失败

4)时间复杂度:O(1)

(8)srem

1)语法:srem key member [member … ]

2)含义:将指定元素从key对应的集合中移除

3)返回值:删除成功的元素个数

4)时间复杂度:O(N),N为删除的个数

(9)并集、交集、差集概念

1)交集:两个集合求并集,结果为两个集合中都存在的元素

2)并集:两个集合求交集,结果为两个集合的所有元素相加,并去掉重复的元素,只留下一份

3)差集:A和B求差集,A在前面,则返回A中存在,但B中不存在的元素;B和A求差集,B在前面,则返回在B中存在,但A中不存在的元素

下面三个命令都是和上述概念相关的,也是set集合的特点所在

(10)sinter与sinterstore

  • sinter

1)语法:sinter key1 [key2 … ]

2)含义:获取指定集合的交集(可以一个或者多个集合)

3)返回值:交集的元素

4)时间复杂度:O(N*M),N是最小集合的元素个数,M是最大集合的元素个数

  • sinterstore

1)语法:sinterstore destination key1 [key2 … ]

2)含义:获取到的交集元素存放到destination集合中

3)返回值:交集的元素

4)时间复杂度:O(N*M),N是最小集合的元素个数,M是最大集合的元素个数

(11)sunion与sunion

  • sunion 

1)语法:sunion key1 [key2 … ]

2)含义:获取给定set的并集中的元素

3)返回值:并集的元素

4)时间复杂度:O(N),N给定的所有集合的总的元素个数

  • sunionstore

1)语法:sunionstore destination key [key … ]

2)含义:获取给定set的并集中的元素并且保存到目标set中

3)返回值:并集的元素个数

4)时间复杂度:O(N),N给定的所有集合的总的元素个数

(12)sdiff与sdiffstore

  • sdiff 

1)语法:sdiff key [key … ]

2)含义:获取给定set的差集中的元素

3)返回值:差集的元素

4)时间复杂度:O(N),N是给定的所有集合的总的元素个数

  • sdiffstore

1)语法:sdiffstore destination key [key … ]

2)含义:获取给定set的差集中的元素并且保存到目标set中

3)返回值:差集的元素个数

4)时间复杂度:O(N),N是给定的所有集合的总的元素个数

3.编码方式与应用场景

(1)编码方式

set内部主要有两种编码方式,分别是intset(整数集合)和hashtable(哈希表)

  • intset

当set集合中的元素都为整数时,编码方式为intset,可以减少内存的使用

  • hashtable

不是intset时,编码方式就为hashtable

(2)应用场景1---保存用户标签

这方面也就是用set来保存用户的特征,从而分析出“用户画像”,进而更方便给用户推荐相应的产品。

(3)应用场景2---计算用户之间的公共好友

利用set中元素的唯一性,多个集合之间求并集,就能推算出用户之间的公共好友。

(4)应用场景3---统计UV

UV也就是用户访问服务器后产生的痕迹,痕迹+1,同一个用户多次访问同一个服务器不会使UV增加

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

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

相关文章

苦瓜检测系统源码分享

苦瓜检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vision 研究…

以光塑形:光固化3D打印机原理图文解析

公众号端: 光固化打印机介绍https://mp.weixin.qq.com/s?__bizMzkwMjc0MTE3Mw&mid2247484073&idx1&sn0d0fd026b373b06cd7c340ec8f56a006&chksmc0a1af73f7d62665a632baebbde4e5e00ffb9c6bd31bf547b4a86855d5524535619a6175a428#rd 光固化打印机…

linux如何与网络时间对齐(雪花算法ID重复)

文章目录 前言一、可能引发什么问题?二、调整步骤1.查看当前系统时间2.修改为中国时区3.同步网络时间4. 雪花id重复 总结 前言 linux服务器是部署服务的不二之选,有个小问题不可忽略: 会发现默认的服务器时间并非中国时区,时间也是相差八小时,中国时区…

python全栈学习记录(二十四)元类、异常处理

元类、异常处理 文章目录 元类、异常处理一、元类1.元类控制类的实例化2.属性/方法的查找顺序3.单例 二、异常处理 一、元类 1.元类控制类的实例化 类的__call__方法会在产生的对象被调用时自动触发,args和kwargs就是调用实例时传入的参数,返回值是调用…

Hotspot是什么?

Hotspot 简单来说,JVM的一种。 一、HotSpot 的官方定义 HotSpot 是 Oracle 公司开发的一个高性能的 Java 虚拟机(JVM)。它通过一系列先进的技术和优化手段,为 Java 应用程序提供高效的运行环境,实现了跨平台的代码执行…

文献下载/影响因子查询/文献检索/文献翻译平台推荐

文献下载平台 科研通 文献互助平台 - 科研通(AbleSci.com) 每天签到可领10积分,右上角求助文献,一篇10积分,基本实现免费下载。 尽量输入doi(类似文献id),如果没有doi则输入标题作者摘要等信息&#xff0…

SpringBoot 整合JPA

spring data jpa JPA(java persistence api) JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。 [1] Sun引入新的JPA ORM规范出于两…

链表Set_LinkList(建立)

用单链保存集合元素,元素由键盘输入。输入以-1结束,将所建链表打印输出。 链表结构如下图所示: 提示: 1.链表中数据元素为整型,typedef int ElemType; 2.用结构体自定义链表结构Set_LinkList ; 3.初始化链表…

【每日刷题】Day135

【每日刷题】Day135 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. LCR 011. 连续数组 - 力扣(LeetCode) 2. 【模板】二维前缀和_牛客题霸_牛客…

基于SSM的共享读书网站

文未可获取一份本项目的java源码和数据库参考。 1.1 题目背景 进入新时代,中国的经济建设和社会发展需要与之相适应的人力资源相匹配。如何提升人力资源的素养,是新时代中国持续发展亟待解决的问题[1]。阅读不失为其中一个有效的手段。有效有益的阅读能…

【每日一题 | 24.10.6】确定字符串是否包含唯一字符

1. 题目2. 解题思路3. 代码实现(AC_Code) 个人主页:C_GUIQU 归属专栏:每日一题 1. 题目 确定字符串是否包含唯一字符 2. 解题思路 题目要求:判断输入的字符串是否唯一,这里想到可以借助布尔数组。 第一…

软件测试外包干了4年,感觉废了....

先说一下自己的情况,大专生,18年通过校招进入湖南某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

【模板进阶】std::conditional

一、 s t d : : c o n d i t i o n a l std::conditional std::conditional的使用 C 11 C11 C11标准引入了 s t d : : c o n d i t i o n a l std::conditional std::conditional,这是一个类模板,用于表现一种编译期间的分支逻辑。 它的实现代码比较简…

【斯坦福CS144】Lab4

一、实验目的 完成一个网络接口实现。 二、实验内容 完成一个网络接口实现,其大部分工作是:为每个下一跳IP地址查找(和缓存)以太网地址。而这种协议被称为地址解析协议ARP。 三、实验过程 在minnow目录下输入git merge origin/check4-startercode获…

[ C++ ] C++ 类和对象 -- 类的六个默认成员函数

目录 1.构造函数 2.析构函数 3.拷贝构造函数 4.赋值操作符重载 5.两个取地址操作符的重载 在C中当你创建一个空类,那这个空类是什么都没有吗?不是的,编译器会默认帮你生成六个成员函数 1.构造函数 构造函数是特殊的成员函数,…

使用数据库:

数据库: 1.为何需要数据库? 存储数据方法 第一种:用大脑记住数据, 第二种:写纸上, 第三种:写在计算机的内存中, 第四种:写出磁盘文件 2.数据库能做什么&#xff1…

【探索艺术新纪元:Midjourney中文版,让创意无界!】

🎨 艺术,从此触手可及 在这个数字时代,Midjourney中文版正引领一场艺术创作的革命。作为一款前沿的AI绘画工具,它利用深度学习技术,将你的想象转化为触手可及的艺术作品。无需深厚的绘画功底,只需简单的文…

机器学习:opencv--图像拼接

目录 前言 一、两个函数 1.显示图像 2.计算图片特征与描述符 二、代码实例 1.准备图像 2.特征检测 3.特征匹配 4.图像变换 5.图像融合 前言 图像拼接是一种将多张图像合成一幅大图的技术,常用于全景图生成、图像拼接和图像合成等应用场景。 一、两个函数…

第二十三天|回溯算法| 39. 组合总和,40. 组合总和II,131. 分割回文串

目录 39. 组合总和 未剪枝 剪枝优化 40. 组合总和II 131. 分割回文串 回溯 回溯动态规划优化回文串判断 今天的题目自己都没啥思路,二刷的时候再理解一下。尤其是131. 39. 组合总和 本题和77.组合 ,216.组合总和III的区别是:本题没有…

IDEA 输入英文字体变了的问题

**问题:**有时不知道按了什么快捷键导致在 IDEA 输入英文字体变了,如下所示,看起来特别不顺眼: 出现以上问题是因为在输入时切换了中文输入法,并且在提示文字时按了 Shift 空格 键,导致出现以上字体变化情…