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

初识redis:Set类型

Set有很多种含义,比如集合,比如设置(和get相对应)。

在这里我们说的set是指的redis中的集合,并且这里的集合是无序的,和之前的list是对应的。

  • List  : [1,2,3] 和 [2,1,3] 是两个不同的list
  • Set  : [1,2,3] 和 [2,1,3] 是两个相同的集合

目录

基本操作

SADD    SMEMBERS    SISMEMBER

SPOP   

SMOVE

SREM

交集、并集、差集

SINTER

SINTERSTORE

SUNION

SUNIONSTORE

SDIFF

SDIFFSTORE

Set的应用场景


基本操作

SADD    SMEMBERS    SISMEMBER

SADD:添加元素到集合中

SMEMBERS:查询集合的元素

SISMEMBER:查询某个元素是否在集合中。

SADD key member [member ...]
SMEMBERS key
SISMEMBER key

把集合中的元素叫做member,并且当出现重复的元素的时候,只算同一个元素。

SPOP   

SPOP key [count]

不写count的时候,就是随机删除一个,写的时候就是写几个删除几个。并且删除的时候是随机删除元素,跟插入的顺序没有关系。

SMOVE

SMOVE source destination member

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

如果要移动的数字在destination中已经有了,那么仍然会按照删除再插入的操作进行,但是插入会不会有效果。

如果要移动的数字在source中没有,会操作失败。

SREM

可以一次删除一个member,也可以一次删除多个member

SREM key member [member...]

交集、并集、差集

SINTER

求交集

SINTER key [key ...]

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

SINTERSTORE

直接把算好的交集,放到destination这个key对应的集合中了。

SINTERSTORE destination key [key ...]

SUNION

求并集

SUNION key [key ...]

SUNIONSTORE

和上面的一样,把并集储存到destination中。

SDIFF

求差集

SDIFF key [key ...]

返回值是差集的个数。

SDIFFSTORE

和上面的一样,把差集存储到destination中。

总结:

命令时间复杂度
SADD key element[element...]O(k), k是元素个数
SREM key element[element...]O(k), k是元素个数
SCARD keyO(1)
SISMEMBER key elementO(1)
SRANDMEMBER key[count]O(n), n是count
SPOP key[count]O(n), n是count
SMEMBERS keyO(k), k是元素个数
SINTER key[key...] SINTERSTOREO(m*k), k是几个集合中元素最小的个数, m是
SUNION key[key...] SUNIONSTOREO(k), k是多个集合的元素个数总和
SDIFF key[key...] SDIFFSTOREO(k), k是多个集合的元素个数总和

Set的应用场景

  • 使用Set来保存用户的“标签”
  • 使用Set来计算用户之间的共同好友
  • 使用Set统计UV(去重)

http://www.mrgr.cn/news/3463.html

相关文章:

  • 【实战场景】如何优雅实现分页
  • 20240821给飞凌OK3588-C的核心板刷Rockchip原厂的Buildroot并挂载1TB的exFAT格式的TF卡
  • ARM 裸机与 Linux 驱动对比及 Linux 内核入门
  • 【ARM+Codesys 客户案例 】 基于RK3568/A40i/STM32+CODESYS在工厂自动化中的应用:铆接机
  • Android强大的滚动控件RecyclerView
  • 反向沙箱是什么?如何使用反向沙箱保障上网安全
  • Ecosmos开启公测,将深度赋能CIOE中国光博会元宇宙参会新体验
  • Excel平均值与减法技巧
  • Python编码系列—前端后浪:Python前后端分离开发实战指南
  • 图片太大不能上传怎么压缩变小?图片压缩变小的8个方法
  • 极限02:两个重要极限
  • package 文件中的 main、module、exports 字段
  • 企业级WEB应用服务器TOMCAT攻略
  • docker swarm如何让两个副本分别跑在两台不同的主机上
  • Hyper-V 与 VMware 的区别
  • 8月21日CSPJxx模拟题 总结
  • C++设计原则
  • Docker-harbor 私有仓库部署和管理
  • GPS 和arduino 获取经纬度
  • 【Python系列】 并发编程在数据处理中的应用