当前位置: 首页 > 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(去重)

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • element-ui下拉框的使用
  • 网络协议概述,ip协议,TCP协议,udp协议,二者区别,python中用socket类实现网络通信程序的编写(服务器套接字实现TCP编程,UDP编程)
  • GBase 8s数据库学习积累(2)
  • Android Audio
  • 餐厅点餐系统
  • python中在字符串前所加的字母r““、f““、b““、u““的含义
  • 2024年游泳耳机哪个牌子好?四大热门游泳耳机多维测评盘点!
  • kotlin adapter赋值失效
  • 【QT文件操作】---xml文件读取
  • Flat Ads:全球金融应用现状与发展趋势深度解析
  • [创业之路-138] :产品需求、产品研发、产品生产、库存管理、品控、售后全流程 - 时序图
  • linux下的oracle启动命令
  • 今年奥运会的场馆设计,竟然藏着这样的黑科技!
  • 反欺诈技术发展的现状与未来预测
  • VS2022 Cmake项目构建 Qt
  • [iOS]Core Data浅析一 -- 启用Core Data
  • [译] React v16.8: 含有Hooks的版本
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • flask接收请求并推入栈
  • go append函数以及写入
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • JavaScript-Array类型
  • Java多态
  • js ES6 求数组的交集,并集,还有差集
  • learning koa2.x
  • Python打包系统简单入门
  • Swift 中的尾递归和蹦床
  • 百度小程序遇到的问题
  • 关于字符编码你应该知道的事情
  • 前端之Sass/Scss实战笔记
  • 数据可视化之 Sankey 桑基图的实现
  • 推荐一个React的管理后台框架
  • 白色的风信子
  • 组复制官方翻译九、Group Replication Technical Details
  • ​2021半年盘点,不想你错过的重磅新书
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • ​linux启动进程的方式
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • #if #elif #endif
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • (12)Linux 常见的三种进程状态
  • (175)FPGA门控时钟技术
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (2024,Flag-DiT,文本引导的多模态生成,SR,统一的标记化,RoPE、RMSNorm 和流匹配)Lumina-T2X
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • (十)T检验-第一部分
  • (一)appium-desktop定位元素原理
  • (一)SpringBoot3---尚硅谷总结
  • (一)VirtualBox安装增强功能
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)
  • (转)Oracle 9i 数据库设计指引全集(1)
  • (转)四层和七层负载均衡的区别
  • (轉貼) 資訊相關科系畢業的學生,未來會是什麼樣子?(Misc)
  • **CI中自动类加载的用法总结