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 ⽤⼾ 对历史、新闻⽐较感兴趣,这些兴趣点可以被抽象为标签。有了这些数据就可以得到喜欢同⼀个标签 的⼈,以及⽤⼾的共同喜好的标签,这些数据对于增强⽤⼾体验和⽤⼾黏度都⾮常有帮助。 例如⼀个 电⼦商务⽹站会对不同标签的⽤⼾做不同的产品推荐

相关推荐
Elastic 中国社区官方博客7 小时前
使用 Elasticsearch 和 Jina 进行 AI 视频搜索:精准找到你需要的视频片段秒数
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
Omics Pro7 小时前
新型条件传输模型!虚拟细胞扰动预测
数据库·人工智能·算法·机器学习·自然语言处理
实验室管理云平台7 小时前
环境检测实验室管理系统:提升效率与数据准确性的关键工具
大数据·数据库·科技
黄金龙PLUS8 小时前
5个800比特大状态置换算法的设计与分析
算法·网络安全·密码学·哈希算法·同态加密
政企项目老覃8 小时前
大模型 Agent 自主任务编排:电商客服地址解析从 12% 失败率到 2.1% 的落地复盘
人工智能·程序人生·算法
Hui Baby8 小时前
Redis Streams 发布订阅
redis
SelectDB技术团队8 小时前
快手基于 Apache Doris 千亿多模态检索的实践
数据库·数据分析·全文检索·快手·apache doris·向量索引·多模态检索
kukubuzai8 小时前
双指针系列二--末尾篇(3道题)
c++·算法·leetcode
政企项目老覃8 小时前
金融转账“幽灵失败“排查实录:从本地消息表到 Seata TCC 的选型与权衡
数据库·程序人生·性能优化·数据分析·系统架构
TLA技术8 小时前
LogMiner vs 裸日志解析(三):Oracle日志解析中的“前镜像”和“后镜像”,到底怎么用?
数据库·oracle·flink·dba·迁移学习