【Redis】set数据类型相关指令

目录

set简单介绍

集合类型也是保存多个字符串类型的元素的,但和列表类型不同的是,集合中元素之间是无序的(顺序不重要,元素交换一下顺序,元素还是那个元素),元素不允许重复。一个集合中最多可以存储 2^32 - 1 个元素。Redis 除了支持集合内的增删查改操作,同时还支持多个集合取交集、并集、差集,合理地使用好集合类型,能在实际开发中解决很多问题。

sadd

将一个或者多个元素添加到 set 中。注意,重复的元素无法添加到 set 中。

该指令返回成功添加了几个元素。如果 key 不存在,则会创建一个。可以看到,元素是无序的,并不按照插入顺序排列。

smembers

获取一个 set 中的所有元素,注意,元素间的顺序是无序的。

sismember

判断一个元素在不在 set 中。

scard

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

spop

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

可以看到两轮 spop 的结果不一样,所以这玩意是真随机,不是说因为 set 是无序的,所以底层不按顺序放的,因而你 pop 出来的一直都是这个底层不按顺序的顺序。他这个真是一个 random 算法随机出来的,所以是真随机(真的伪随机哈哈)。

srandmember

会从集合中返回一个或多个随机元素,但不会移除这些元素。

smove

将一个元素从源 set 取出并放入目标 set 中。

返回 1 表示成功,返回 0 表示失败。如果转移目标有这个元素,因为 set 的特性,目标不会有变化,但是被转移者确实会少了这个元素。如果被转移者没有要转移的元素,会失败。

srem

将指定的元素从 set 中删除。

sinter

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

sinterstore

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

如果是不存在的键会自动创建。

sunion

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

sunionstore

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

sdiff

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

注意前后顺序不一样会有差别,都是前面减后面的。

sdiffstore

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

编码方式

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

intset(整数集合):当集合中的元素都是整数并且元素的个数小于 set-max-intset-entries 配置(默认 512 个)时,Redis 会选用 intset 来作为集合的内部实现,从而减少内存的使用。intset相对低效,但是元素少就还好。

hashtable(哈希表):当集合类型无法满足 intset 的条件时,Redis 会使用 hashtable 作为集合的内部实现。

使用场景

集合类型最典型的应用场景是标签管理,在各类互联网产品中,可将用户的兴趣偏好(如娱乐、体育、历史、新闻等)抽象为标签,通过集合相关命令对用户与标签的关联关系进行全生命周期管理。具体来说,既可以为不同用户添加对应的兴趣标签,也能反向为每个标签关联对应的用户群体,同时支持灵活删除指定用户下的特定标签,或是从某一标签下移除对应的用户;此外,借助集合的交集运算功能,还能精准计算出不同用户之间的共同兴趣标签,这些基于标签的数据分析结果,能为电子商务网站等平台的个性化产品推荐、提升用户体验和增强用户黏度提供核心的数据支撑。

相关推荐
Anastasiozzzz1 小时前
MySQL深分页问题与优化思路
数据库·mysql
伯明翰java1 小时前
数据库的操作
数据库
知识分享小能手5 小时前
PostgreSQL 入门学习教程,从入门到精通,PostgreSQL 16 语法知识点与案例详解(1)
数据库·学习·postgresql
康康的AI博客5 小时前
智能情感分析与品牌策略优化:如何通过AI洞察提升企业市场响应力
大数据·数据库·人工智能
Anastasiozzzz5 小时前
阿亮随手记:MySQL移除查询缓存、子查询优化深分页、自增主键溢出、索引失效
数据库·mysql·缓存
ppp今天又没打瓦6 小时前
围达梦数据库批量插入更新性能实测:普通表、一级分区与二级分区的对决
数据库
@insist1236 小时前
软考-数据库系统工程师-计算机体系结构与流水线核心考点解析
数据库·软考·数据系统工程师
可观测性用观测云6 小时前
KES(KingbaseES)数据库监控最佳实践
数据库
新缸中之脑7 小时前
在Reddit上探索未满足的需求
数据库·oracle
安当加密7 小时前
用 SMS 凭据管理系统替代 HashiCorp Vault:中小企业的轻量级 Secrets 管理实践
服务器·数据库·安全·阿里云