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

8.Redis-set

Set

    • 常用命令
      • sadd
      • smembers
      • sismember
      • scard
      • spop
      • smove
      • srem
      • 集合间操作
        • sinter 交集
        • sinterstore
        • sunion 并集
        • sunionstore
        • sdiff 差集
        • sdiffstore
      • 命令总结
    • 内部编码
    • 应用场景
      • 使用 set来保存用户的“标签”

set(集合)就是把一些有关联的数据放刀一起。
它与list的区别如下:

  1. 集合中的元素是无序的!
    这里说的有序是指变换顺序后,就是不同的list,具体大致如下:
    list [1, 2, 3] 和 [2, 1, 3] 是两个不同的list,而set[1, 2, 3] 和[2, 1, 3]是同一个集合
  2. 集合中的元素是不能重复的。

集合中的元素叫做 member。

常用命令

sadd

作用:将⼀个或者多个元素添加到 set 中。注意,重复的元素⽆法添加到 set 中。
语法:SADD key member [member ...]
返回值:本次添加成功的元素个数。

在这里插入图片描述

smembers

作用:获取⼀个 set 中的所有元素,注意,元素间的顺序是⽆序的。
语法:SMEMBERS key

在这里插入图片描述

sismember

作用:判断⼀个元素在不在 set 中。
语法:SISMEMBER key member
返回值:1 表⽰元素在 set 中。0 表⽰元素不在 set 中或者 key 不存在。

在这里插入图片描述

scard

作用:用于获取集合中成员的数量
语法:SCARD key
在这里插入图片描述

spop

作用:从set中随机删除一个或多个 member 并返回一个或多个随机member。
语法:SPOP key [count]

在这里插入图片描述

smove

作用:把member 从 source 上删除,再插入到 destination 中。
语法:
SMOVE source destination member
返回值:1 表⽰移动成功,0 表⽰失败。
在这里插入图片描述
如果此时有个 key2 里面 有 member元素 4了,再从key3中把这个 member元素4 移动 key2时,key3中 4 会被删除,key2中不会新增多一个4。
在这里插入图片描述

srem

作用:将指定的 member 从 set 中删除。
语法:
SREM key member [member ...]
返回值:本次操作删除的元素个数。

在这里插入图片描述

集合间操作

sinter 交集

作用:获取给定 set 的交集中的元素。
语法:SINTER key [key ...]
返回值:交集的元素。
在这里插入图片描述

sinterstore

作用:获取给定 set 的交集中的元素并保存到⽬标 set 中。
语法:SINTERSTORE destination key [key ...]
返回值:交集的元素个数。
在这里插入图片描述

sunion 并集

作用:获取给定 set 的并集中的元素。
语法:SUNION key [key ...]
在这里插入图片描述

sunionstore

作用:获取给定 set 的并集中的元素并保存到⽬标 set 中。
语法:SUNIONSTORE destination key [key ...]
返回值:并集的元素个数。

在这里插入图片描述

sdiff 差集

作用:获取给定 set 的差集中的元素。
语法:SDIFF key [key ...]
在这里插入图片描述

sdiffstore

作用:获取给定 set 的差集中的元素并保存到⽬标 set 中
语法:SDIFFSTORE destination key [key ...]
在这里插入图片描述

命令总结

命令时间复杂度
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 …] sitnerstoreO(m * k)
sunion key [key …] sunionstoreO(k),k 是多个集合的元素个数总和
sdiff key [key …] sdiffstoreO(k),k 是多个集合的元素个数总和

内部编码

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

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

intset是为了节省空间,做出的特定优化,只有当元素全为整数,并且元素个数不是很多的时候才会被优化菜intset。
在这里插入图片描述

应用场景

使用 set来保存用户的“标签”

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

http://www.lryc.cn/news/148474.html

相关文章:

  • 电子厂生产管理系统解决方案
  • ARM DIY(五)摄像头调试
  • hadoop2.2.0伪分布式搭建
  • 高级IO(select、poll、epoll)
  • Ceph基础知识和基础架构认识
  • 【C++】快速排序的学习和介绍
  • 第九章 动态规划part12(代码随想录)
  • ssm珠宝首饰交易平台源码和论文
  • 交互设计都有哪些准则?
  • 【MySQL】从哪几个角度分析数据库失败的原因?
  • Spring Boot 的核心注解SpringBootApplication
  • 自助式数据分析平台:JVS智能BI功能介绍(一)数据源
  • CSS魔术师Houdini,用浏览器引擎实现高级CSS效果
  • DC/DC开关电源学习笔记(二)开关电源的分类
  • conda创建python虚拟环境
  • Python 操作 MongoDB 数据库介绍
  • 【ES6】Generator 函数
  • 「操作系统」1. 基础
  • Docker安装Oracl数据库!
  • QT子窗口为QWidget类型时,窗口背景不透明的实现方法
  • leecode 数据库:1158. 市场分析 I
  • 简单shell脚本的编写
  • 汽车售后接待vr虚拟仿真实操演练作为岗位培训的重要工具和手段
  • 登录校验-Filter-登录校验过滤器
  • Vue3列表竖向滚动(包含使用swiper的翻页效果)
  • OS 死锁处理
  • Java实现根据按图搜索商品数据,按图搜索获取1688商品详情数据,1688拍立淘接口,1688API接口封装方法
  • 如何避免重复消费消息
  • 【若依框架RuoYi-Vue-Plus 图片回显不显示问题,OSS文件上传或者本地上传】
  • docker搭建rocketmq环境