当前位置: 首页 > news >正文

Redis-set集合

目录

1.介绍:

2.普通命令:

sadd:

smembers:

sismember:

scard:

spop:

smove:

srem:

3,集合间的操作

sinter:

sinterstore:

sunion:

sunionstore:

sdiff:

sdiffstore:

4.内部编码:

5.应用场景:

1.使用set来保存用户的“标签”(用户画像)

2.使用set来计算用户之间的共同好友

3.使用set统计UV


1.介绍:

集合类型用来保持多个字符串类型的元素,但和列表不同的是,集合中的元素是无需的,且元素不允许重复。

集合还支持交集,并集,差集,合理的利用集合可以在开发中解决很多问题。

2.普通命令:

sadd:

作用:将一个或多个元素添加到set中,(无法添加重复的元素)

语法:sadd key member [member,...]

时间复杂度:O(1)

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

eg:

smembers:

作用:获取set中的所有元素(无序的)

语法:smembers key

时间复杂度:O(1)

返回值:key中所有元素的列表

eg:

sismember:

作用:判断某个元素是否在集合中

语法:smembers key

时间复杂度:O(1)

返回值:1:表示元素在集合中,0:元素不在集合中或集合不存在

eg:

scard:

作用:获取set中元素的个数

语法:scard key

时间复杂度:O(1)

返回值:set中元素的个数

eg:s1中有元素:1 2 3 4 5 6 ,s2集合不存在

spop:

作用:从set中删除并返回一个或多个元素,(由于set是无序的,因此删除哪个元素也是随机的)

语法:spop key [count] (count:删除元素的个数)

时间复杂度:O(1)

返回值:删除的元素

eg:

smove:

作用:将set1中的一个元素取出放到set2中

语法:smove set1 set2 member

时间复杂度:O(1)

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

eg:  s1:2 4    s2 :3 4 5 6,将s1中的2移到s2中

执行失败:

srem:

作用:将指定的元素从set中删除

语法:srem key member [member,....]

时间复杂度:O(1)

返回值:本次操作删除元素的个数

eg: 将2从s2中删除,执行成功,返回1:

再次删除时,执行失败,返回0

3,集合间的操作

交集,并集,差集是集合间的操作。

交集:两个或多个集合共同存在的元素。

并集:两个或多个集合所有的元素。

差集:A与B的差集:A集合存在,而B集合不存在的元素;

           B与A的差集:B集合存在,而A集合不存在的元素;

sinter:

作用:获取给定set的交集中的元素

语法:sinter key1 key2 [key3,...]

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

返回值:交集的元素

eg:对s1和s2执行交集操作:

当交集中有一个集合不存在或为空时,返回为一个空集:

sinterstore:

作用:获取给定set的交集中的元素,并保存到key中

语法:sinterstore key key1 key2 [key3,...]

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

返回值:交集的元素个数

eg:

sunion:

作用:获取给定set的并集中的元素

语法:sunion key1 key2 [key3,...]

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

返回值: 并集的元素

eg:求s1和s2的并集:

当有个一集合为空或不存在时,返回的是另一个存在集合中的元素:

s1:1 2 3, s3为空集

sunionstore:

作用:获取给定set的并集中的元素,并将其保存到key中

语法:sunionstore  key key1 key2 [key3,...]

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

返回值: 并集的元素个数

与一个空集和求并集:

sdiff:

作用:获取给定set的差集中的元素

语法:sdiff key  [key,...]

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

返回值: 差集的元素

分别求s1与s2的差集和s2与s1的差集:

sdiffstore:

作用:获取给定set的差集中的元素,并将其保存到key中

语法:sdiffstore  key key1 [key3,...]

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

返回值: 差集的元素个数

eg:

4.内部编码:

集合类型的内部编码有两种:intset(整数集合),hashtable(哈希表)

1.当元素都为整数,并且元素个数<512个时,内部编码为intset;

2.当元素个数>512,内部编码为hashtable;

3.当存在元素不是整数时,内部编码为hashtable;

查看任意类型元素内部编码的命令为:object encoding 值

s1中的元素为:1 2 3 ,后又加上aa,分别查看内部编码:

5.应用场景:

1.使用set来保存用户的“标签”(用户画像)

现在各种软件都有推送的功能,推送的内容都是我们想要看的,或者是最近经常搜索的.....

这是由于软件后台在监控我们的数据信息。通过信息收集,分析出个人特征,再“投其所好”。

由于set元素具有不重复的特性,就可以用来保存用户的信息。

2.使用set来计算用户之间的共同好友

使用set的交集来获取不同用户之间的共同好友,进而将其推送给另一个人。

3.使用set统计UV

一个互联网产品,如何衡量其用户规模?

主要有两个指标:

1.PV: page view:用户每次访问一下该服务器,就会产生一个pv

2.UV:user view :每个用户访问浏览器都会产生一个pv,但是同一个用户多次访问,不会使uv增加,uv会按照用户进行去重.

http://www.lryc.cn/news/575515.html

相关文章:

  • C++ 第三阶段:语言改进 - 第四节:nullptr vs NULL
  • 基于Spring Boot 构建现代化短视频平台:HBC Video全栈开发实战
  • 《高等数学》(同济大学·第7版)第九章 多元函数微分法及其应用第二节偏导数
  • 信创国产化替代中的开发语言选择分析
  • Java 大视界 -- Java 大数据机器学习模型在卫星通信信号干扰检测与智能抗干扰中的应用(323)
  • uniapp事件onLoad区分大小写
  • JVM调优实战 Day 7:JVM线程分析与死锁排查
  • 《汇编语言:基于X86处理器》第5章 过程(1)
  • DSP学习笔记1
  • ISP Pipeline(4): Anti Aliasing Noise Filter 抗锯齿与降噪滤波器
  • 6月份最新代发考试战报:思科华为HCIP HCSE 考试通过
  • Spring 框架
  • Pytest项目_day03(Postman使用)
  • Servlet继承结构
  • [附源码+数据库+毕业论文]基于Spring+MyBatis+MySQL+Maven+vue实现的考研图书电子商务平台管理系统,推荐!
  • Docker 入门教程(二):Docker 的基本原理
  • Java基础知识(十一)GUI图形用户界面设计
  • iOS App 上架流程工具链解析:开发者视角下的协作实践总结
  • ubuntu 远程桌面 xrdp + frp
  • AI in CSR Writing: Revolutionizing Clinical Trial Reports
  • 专题:2025中国游戏科技发展研究报告|附130+份报告PDF、原数据表汇总下载
  • Linux命令与脚本:高效系统管理的双刃剑
  • 记dwz(JUI)前端框架使用之--服务端响应提示框
  • Llama 3 + Qwen2双模型实战:单张3090构建企业级多模态知识库(2025精解版)
  • MyBatis深度面试指南
  • 【PX4-AutoPilot教程-TIPS】PX4系统命令行控制台ConsolesShells常用命令(持续更新)
  • 2025Q1东南亚移动游戏:休闲游戏主导下载,本地化是出海重要战略!
  • Unified、Remark 和Rehype 是 JavaScript 生态中用于处理结构化文本(如 Markdown 和 HTML)的核心工具
  • UDP 和 TCP 可以同时使用相同的端口号
  • 创客匠人解析视频号公私域互通逻辑:知识变现的破圈与沉淀之道