Redis初识第六期---Set类型的命令和使用场景

Set类型特征:1.集合中的元素无序(这里的无序是和List的有序对应的,指的是对元素位置不敏感)。

2.集合中的元素不可重复。

3.和List类似,集合中的每个元素都为String类型。

命令

普通操作

1.Sadd

语法:Sadd key meber [meber....]

返回添加的元素个数。

时间复杂度O(1)。

2.Smembers key

查询元素(通过key),时间复杂度也是O(1)。

3.Sismember key member

判断当前元素是否在集合。

存在的话,返回1,不存在,返回0。

4.Spop

Spop key [count]

count:删除元素的个数,默认情况为1。

由于Set为无序的,所以是随机删除的。

5.Srandmember key [count]

随机获取元素,默认为获取1个,count可以指定获取数量。

6.Smove

Smove Source destination member

将一个元素从一个Set取出来存到另一个Set中,返回1代表成功,0代表失败。

Source:源Set。

destintion:目标set。

如果目标Set已经有源Set中要插入的元素了,那么只会将源set中的元素给删除,目标set中的元素不会增加。

7.Srem

Srem key member [member.....]

可以一次删除一个或者多个member

集合间操作

1.Sinter

Sinter key [key...]

求多个Set的交集,返回结果为交集。

时间复杂度为O(n*m);(n为最小集合个数,m为最大元素个数)

2.SinterStore

SinterStore destintion key[key....]

把算好的交集放入到destntion中,返回结果为个数。

3.Sunion

Sunion key [key....]

求并集的操作。时间复杂度O(N),N表示总的元素个数。

同时也提供了Sunionstore destination key[key....]返回并集的操作。

4.SDiff

O(N):总的元素个数。

 SDiff key [key....]

求差集的操作。

同时也提供了SDiffStore destination key[key....]

5.Scard key

求key中元素的个数。

Set内部的编码

1.insert(整数集合)

为了节省空间做的特定优化,适应于当元素均为整数且元素个数不多时。

2.hashtable(哈希表)

类似于Java中的hash表,查找和添加、删除时间复杂度都是O(1),但是对内存空间消耗更大。

Set应用场景

1.使用Set来保存用户的“标签”

像什么购物,短视频,可以使用Set来存用户的喜好,称为用户画像。

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

基于Set的求并集操作。

3.使用Set来添加UV

UV:UserView,由于一个用户可能访问多次,而Set不允许元素重复,所以可以来添加UV。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值