【Redis】Redis数据结构——Set 集合

集合类型也是保存多个字符串类型的元素的,但和列表类型不同的是,集合中 1)元素之间是⽆序的 2)元素不允许重复,如图 2-24 所⽰。⼀个集合中最多可以存储 个元素。Redis 除了⽀持集合内的增删查改操作,同时还⽀持多个集合取交集、并集、差集,合理地使⽤好集合类型,能在实际开发中解决很多问题。

在这里插入图片描述

普通命令

sadd

将⼀个或者多个元素添加到 set 中。注意,重复的元素⽆法添加到 set 中。

在这里插入图片描述

smembers

获取⼀个 set 中的所有元素,注意,元素间的顺序是⽆序的。

在这里插入图片描述

sismember

判断⼀个元素在不在 set 中。

在这里插入图片描述

scard

获取⼀个 set 的基数(cardinality),即 set 中的元素个数。

在这里插入图片描述

spop

从 set 中删除并返回⼀个或者多个元素。注意,由于 set 内的元素是⽆序的,所以取出哪个元素实际是未定义⾏为,即可以看作随机的。

在这里插入图片描述

smove

将⼀个元素从源 set 取出并放⼊⽬标 set 中。

在这里插入图片描述

srem

将指定的元素从 set 中删除。

在这里插入图片描述

集合间操作

交集(inter)、并集(union)、差集(diff)的概念如图 2-25 所⽰。

在这里插入图片描述

sinter

获取给定 set 的交集中的元素。

在这里插入图片描述

sinterstore

获取给定 set 的交集中的元素并保存到⽬标 set 中。

在这里插入图片描述

sunion

获取给定 set 的并集中的元素。

在这里插入图片描述

sunionstore

获取给定 set 的并集中的元素并保存到⽬标 set 中。

在这里插入图片描述

sdiff

在这里插入图片描述

sdiffstore

获取给定 set 的差集中的元素并保存到⽬标 set 中。

在这里插入图片描述

命令小结

在这里插入图片描述

内部编码

集合类型的内部编码有两种:

  • intset(整数集合):当集合中的元素都是整数并且元素的个数⼩于 set-max-intset-entries 配置(默认 512 个)时,Redis 会选⽤ intset 来作为集合的内部实现,从⽽减少内存的使⽤。
  • hashtable(哈希表):当集合类型⽆法满⾜ intset 的条件时,Redis 会使⽤ hashtable 作为集合的内部实现。

在这里插入图片描述

使用场景

集合类型⽐较典型的使⽤场景是标签(tag)。例如 A ⽤⼾对娱乐、体育板块⽐较感兴趣,B ⽤⼾对历史、新闻⽐较感兴趣,这些兴趣点可以被抽象为标签。有了这些数据就可以得到喜欢同⼀个标签的⼈,以及⽤⼾的共同喜好的标签,这些数据对于增强⽤⼾体验和⽤⼾黏度都⾮常有帮助。 例如⼀个电⼦商务⽹站会对不同标签的⽤⼾做不同的产品推荐。

在这里插入图片描述
在这里插入图片描述

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杰深入学习计算机

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值