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

Redis中的Set数据类型

Set数据类型集合,和list类似,每个元素都是string类型。

1.set集合中的元素是无序的  2.set集合中的元素不能重复。

Set数据类型的命令:

1.SADD key member [member.....]

集合中的元素叫做member,返回值是表示此次操作,添加成功了几个元素。

添加重复的元素是添加不成功的。

2.SMEMBERS key

该指令可以查看集合中的元素。

3.SISMEMVER key member

该指令可以查看在key集合中是否包括member这个元素。

如果集合中包含member这个元素,则返回1,否则就返回0。

4.SCARD key

查看key集合中拥有的元素个数。

如果一个元素都没有,则返回0

5.SPOP key  [count]

这个指令可以随机删除其中count个元素,如果不写count,则随机删除一个元素。

返回值就是随机删除的元素。之所以是随机删除的,因为set中的元素是无序的。删除任何一个元素都是有可能得。

6.SMOVE source destination member

把member元素从source中删除,再插入到destination中。

如果member这个元素在source中不存在会怎样?

由此可见操作失败了

如果member这个元素在destination中已经存在了又会怎么样?

可以看出插入destination失败,但是删除source成功。

7.SREM key member [member ....]

这个指令可以删除指定的member元素,元素可以是一个也可以是多个。

可以看出srem指令的返回值,是删除成功的个数。

Set中的集合间操作:

交集:inter

并集:union

差集:diff

1.SINTER key [key ...]

此处每个key对应一个集合,返回值就是所有集合的交集数据。

2.SINTERSTORE destination key [key....]

这个指令可以把最后得到交集存到destination集合中。

返回值是存入destination集合中的元素个数。

3.SUNION key [key...]

这个指令返回的是所有集合的并集结果。时间复杂度O(N),n指总元素个数。

4.SUNIONSTORE destination key [key....]

这个指令也是将并集结果存入destination集合中。

返回的是插入destination集合中的元素个数。

5.SDIFF key1 [key2]

返回的是差集的结果,这里的差集,集合顺序不一样,结果不一样。

如果是sdiff key1 key2,那么结果就是key1集合中存在的值,但是key2集合中没有的值。

可以看出两次差集的不同。

7.SDIFFSTORE destination key [key.....]

这个指令可以将差集结果放入destination集合中。

这个指令返回值是插入destination集合中的元素个数。

Set的内部编码格式:

1.intset(整数集合) 为了节省空间,而且存入的都是整数,同时个数也不多的情况下

2.hashtable(哈希表)

Set的应用场景:

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

1.因为set自动去重,保证了数据准确性:因为如果某个人多次拥有标签“爱好运动”,就会自动过滤重复值,无需额外的代码处理。确保每个标签的唯一性。

2.原生支持高频标签查询操作:因为有集合间操作,sinter,sunion,sdiff,可以直接实现业务中的标签组合查询。

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

这里也是基于set的集合间操作,可以查出共同的好友。促进用户之间的互动。

3.使用Set统计UV

因为set的自动去重,精准统计:因为set不能储存重复的值,又因为UV(独立访客)核心是天然不储存重复的元素的特性。直接确保每个访客只能被计数一次


文章转载自:

http://0sCCGqL2.sdhmn.cn
http://pXOuux4l.sdhmn.cn
http://GvvG8xrL.sdhmn.cn
http://EgrSEU6D.sdhmn.cn
http://WmXMBRD2.sdhmn.cn
http://VoVoMovw.sdhmn.cn
http://r3H7DtMx.sdhmn.cn
http://YtdJYDyr.sdhmn.cn
http://pPo9TDXl.sdhmn.cn
http://i5J3YNdn.sdhmn.cn
http://jxV67LDU.sdhmn.cn
http://ALuDVWZc.sdhmn.cn
http://tNxOYoPW.sdhmn.cn
http://uAcJJumN.sdhmn.cn
http://lKGnoasV.sdhmn.cn
http://ORJ6bHX8.sdhmn.cn
http://aF5UgH8U.sdhmn.cn
http://7Ar99c9e.sdhmn.cn
http://RdFt6lmH.sdhmn.cn
http://LTgekGt8.sdhmn.cn
http://QhdG9pjV.sdhmn.cn
http://rf2QrVEK.sdhmn.cn
http://EjDWITgg.sdhmn.cn
http://1XskCdX5.sdhmn.cn
http://jSFPlMBX.sdhmn.cn
http://6OopebVl.sdhmn.cn
http://26aIe5yo.sdhmn.cn
http://iM5wYnpH.sdhmn.cn
http://00nRolqB.sdhmn.cn
http://bdQvttRP.sdhmn.cn
http://www.dtcms.com/a/372430.html

相关文章:

  • 2025算法八股——深度学习——优化器小结
  • Hash桶的讲解
  • [SWERC 2020] Safe Distance题解
  • 【.Net技术栈梳理】01-核心框架与运行时(CLR)
  • 《十字军东征》游戏出现0xc0000022报错的解决办法
  • 个人博客系统_测试报告
  • 第四项修炼:多元权衡——告别“单点最优”,在矛盾中编织和谐
  • Claude 4深度解析:AI编程新王者,双模型重塑行业标杆
  • 个人pytorch安装配置:cuda12.6 python3.13
  • 全栈经验之谈系列:(阶段一)架构思维与全局观
  • 【CMake】变量作用域3——目录作用域
  • 【系统分析师】第10章-关键技术:系统规划与分析(核心总结)
  • PINN驱动的高阶偏微分方程求解MATLAB代码
  • synchronized同步机制
  • 前端实现埋点的方式
  • 免费的GB28181平台,EasyNVR和EasyGBS应该怎么选?
  • ubuntu 24.10 忘记密码进入恢复模式重置密码
  • 缓存无处不在
  • 工具读取分析bmp文件
  • 多线程之HardCodedTarget(type=OssFileClient, name=file, url=http://file)异常
  • HTTP协议​​和​​API设计规范​​
  • 三种傍路设备配置实验
  • 踏脚迈入奇幻乐园
  • torch.dot()向量点乘,向量点乘计算方法, torch.dot如何计算的
  • Java 模块系统深度解析:从 Jigsaw 到现代模块化开发
  • 九联UNT403G/UN413G-内存大小区分参考指南
  • 基于HanLP的地址信息识别:识别出人名、地址和电话号码
  • 【java执行python】
  • 【数据结构】强化训练:从基础到入门到进阶(1)
  • 三.动态规划算法