当前位置: 首页 > 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会按照用户进行去重.

相关文章:

  • Altera PCI IP target设计分享
  • dockers virbox 安装
  • MySQL多表关系
  • 【已解决】Android Studio gradle遇到unresolved reference错误
  • 归因问答-如何进行人类评估
  • 桌面小屏幕实战课程:DesktopScreen 11 SPI 水墨屏
  • Docker安装Mysql、配置文件挂载、修改Mysql编码
  • Spark 之 QueryStage
  • 高标准通信国际接轨,Ethercat与PROFINET网关实现全自动化生产线
  • 【Pandas】pandas DataFrame first_valid_index
  • 大厂测开实习和小厂开发实习怎么选
  • 使用 ReAct 框架在 Ollama 中实现本地代理(Agent)
  • moduo之缓冲区Buffer
  • Ubuntu网络数据包发送工具大全
  • MT4完全操作指南:从零基础到EA自动交易
  • LLM复杂记忆存储-多会话隔离案例实战
  • 高斯混合模型(Gaussian Mixture Model, GMM)
  • Spark SQL to_json 函数介绍
  • Riverpod原理解析(实现一个自己的Riverpod)
  • 蜂鸟代理IP+云手机:跨境电商多账号运营的“隐形风控引擎”