Redis的Set集合

发布于:2025-03-29 ⋅ 阅读:(26) ⋅ 点赞:(0)

一.Set集合

set集合简单地说,就是把一些有关联的数据放到一起。

它还有一些特殊的性质:

  • 例如集合中的元素是无序的,所谓的无序代表此时1,2,3和2,3,1是等价的。
  • 集合中的元素是不能重复的(唯一的)。

二.Set集合的普通命令

1.SADD

添加元素

在这里插入图片描述

演示:

此时插入的元素都不是重复的,所以返回成功插入元素的个数:

在这里插入图片描述

如果此时插入的元素有重复的则返回个数就不是插入元素的个数:
在这里插入图片描述

2.SMEMBERS

获取set中的所有元素

在这里插入图片描述

演示:

在这里插入图片描述

3.SISMEMBER

判断元素是否存在

在这里插入图片描述

演示:
在这里插入图片描述

4.SPOP

随机删除,count不写就只删除1个,写了按照count的数值来进行删除

在这里插入图片描述

演示:
在这里插入图片描述

5.SMOVE

将一个元素源set中取出,放到目标set当中

在这里插入图片描述

演示:
在这里插入图片描述
注意:

如果key2中已经存在一个数值1,此时再将key1中的数值1,smove到key2中,此时key2不会发生变化,但是key1会将数值1进行删除:

在这里插入图片描述

6.SREM

删除一个或者多个指定元素

在这里插入图片描述

演示:
在这里插入图片描述

7.SINTER

获取给定set一个或者多个集合中的交集(集合中都有的元素)元素

在这里插入图片描述

演示:
在这里插入图片描述

8.SINTERSTORE

直接把算好的交集放在指定的key中

在这里插入图片描述

演示:

在这里插入图片描述

9.SUNION

给定set集合中求并集(将给定的set集合不重复的元素全部合在一起)的操作

在这里插入图片描述

演示:
在这里插入图片描述

10.SUNIONSTORE

算好并集的结果放到目标key中

在这里插入图片描述

演示:

在这里插入图片描述

11.SDIFF

给定set集合,求它们的差集(A和B集合的差集,就是A存在,B不存在的元素)元素

在这里插入图片描述

演示:
在这里插入图片描述
在这里插入图片描述

12.SIDFFSTORE

算好差集,再将这个集合放在指定key中

在这里插入图片描述

演示:
在这里插入图片描述

在这里插入图片描述

三.Set集合内部编码方式

1.intset(整数集合)

为了节省空间做出的优化,也就是当元素均为整数,并且元素个数不多时,使用intset进行存储:

在这里插入图片描述

2.hashtable(哈希表)

当内部元素过多或者有字符串时,就变成了hashtable来进行存储数据:

在这里插入图片描述

四.Set的应用场景

1.Set保存用户标签

最常用的方面就是用户画像,分析一个用户的特征后,在投其所好来进行推送这个用户所感兴趣的内容。

上述还会从搜索的历史记录等其他方面来进行分析一个用户的特征,这样就能够收集完用户的特征,这些特征也就转换成了用户的标签,并且把这些标签存在redis的set集合中。

2.Set计算用户之间的共同好友

基于集合求交集的操作可以体现在,现在使用的QQ上,举一个栗子:

你和你的好基友在一个班级上,你们都加了班级上的同学,此时QQ上就会显示共同好友有多少个。

还有一个推荐好友的栗子:

当我们进入大学之后,我们在QQ上肯定会加自己班级上的人,但是你加的同学,他可能是社团的人,他就可能加了社团里面的人(这些人和你不是一个班级也不是一个专业),此时QQ就会把你同学他在社团里面加的人推送给你。

3.Set统计UV

PV:page view

用户每次访问该服务器,每次同一个用户的访问都会产生一个pv。

UV:user view

每个用户访问服务器都会产生一个uv,但是相同的用户多次访问,不会使UV增加,此时就会需要进行去重操作,就可以使用set来实现。