Redis常用数据类型--Set

Set

SADD

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

sql 复制代码
SADD key member [member ...]

时间复杂度:O(1)

SMEMBERS

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

sql 复制代码
SMEMBERS key

时间复杂度:O(N)

SISMEMBER

判断⼀个元素在不在 set 中

sql 复制代码
SISMEMBER key member

时间复杂度:O(1)

SCARD

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

sql 复制代码
SCARD key

时间复杂度:O(1)

SPOP

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

sql 复制代码
SPOP key [count]

时间复杂度:O(N), n 是 count

SMOVE

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

sql 复制代码
 SMOVE source destination member

时间复杂度:O(1)

SREM

将指定的元素从 set 中删除

sql 复制代码
SREM key member [member ...]

时间复杂度:O(N), N 是要删除的元素个数

SINTER

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

sql 复制代码
SINTER key [key ...]

时间复杂度:O(N * M), N 是最⼩的集合元素个数. M 是最⼤的集合元素个数

SINTERSTORE

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

sql 复制代码
SINTERSTORE destination key [key ...]

时间复杂度:O(N * M), N 是最⼩的集合元素个数. M 是最⼤的集合元素个数

SUNION

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

sql 复制代码
SUNION key [key ...]

时间复杂度:O(N), N 给定的所有集合的总的元素个数

SUNIONSTORE

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

sql 复制代码
 SUNIONSTORE destination key [key ...]

时间复杂度:O(N), N 给定的所有集合的总的元素个数

SDIFF

获取给定 set 的差集中的元素

sql 复制代码
SDIFF key [key ...]

时间复杂度:O(N), N 给定的所有集合的总的元素个数

SDIFFSTORE

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

sql 复制代码
 SDIFFSTORE destination key [key ...]

时间复杂度:O(N), N 给定的所有集合的总的元素个数

内部编码

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

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

使用场景

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

相关推荐
24K老游6 分钟前
postgres15 flink cdc同步测试
数据库
无泡汽水31 分钟前
MySQL入门练习50题
数据库·mysql
卿言卿语1 小时前
CC23-最长的连续元素序列长度
java·算法·哈希算法
JIngJaneIL1 小时前
助农惠农服务平台|助农服务系统|基于SprinBoot+vue的助农服务系统(源码+数据库+文档)
java·前端·数据库·vue.js·论文·毕设·助农惠农服务平台
云外天ノ☼1 小时前
待办事项全栈实现:Vue3 + Node.js (Koa) + MySQL深度整合,构建生产级任务管理系统的技术实践
前端·数据库·vue.js·mysql·vue3·koa·jwt认证
天选之女wow1 小时前
【代码随想录算法训练营——Day60】图论——94.城市间货物运输I、95.城市间货物运输II、96.城市间货物运输III
android·算法·图论
Blossom.1181 小时前
大模型在边缘计算中的部署挑战与优化策略
人工智能·python·算法·机器学习·边缘计算·pygame·tornado
时间醉酒1 小时前
数据结构:双向链表-从原理到实战完整指南
c语言·数据结构·算法
京东零售技术2 小时前
当搜索遇见 AIGC:京东零售的“千人千面”素材生成实践
算法
好学且牛逼的马2 小时前
【HOT100|1 LeetCode 1. 两数之和】
数据结构·算法·leetcode