【Redis】基本数据类型常用操作 - Set

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 【Redis】基本数据类型常用操作 - Set

Set是String类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。


另外,redis中的set是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。


一、sadd 添加一个、多个元素


将一个或多个成员元素加入到集合中,已经存在于集合的成员元素将被忽略。


若key不存在,则创建一个只包含添加的元素作成员的集合。


sadd myset hello pingguo test


若key不是集合类型时,返回一个错误。


1268169-20210617000439197-101813968.png


二、smembers 查看集合


返回集合中的所有的成员。


smembers myset


1268169-20210617000641245-89821395.png


三、scard 元素数量


返回集合中元素的数量。


scard myset


1268169-20210617000839829-788857945.png


四、srem 移除一个、多个元素


用于移除集合中的一个或多个成员元素,不存在的成员元素会被忽略。


当key不是集合类型,返回一个错误。


srem myset hello test


1268169-20210617001155707-1461329212.png


五、srandmember 随机元素


用于返回集合中的一个随机元素。


srandmember myset 3


这里随机抽取3个元素,注意这里仅仅返回随机元素,而不对集合进行任何改动。


1268169-20210617071319931-1922685728.png


六、spop 随机移除一个、多个元素


移除集合中的指定key的一个或多个随机元素,移除后会返回移除的元素。


spop myset 2


跟上面的srandmember区别开,虽然都是随机,但是这里的spop修改了集合。


1268169-20210617071750091-1897175948.png


七、smove 移动元素到目标集合


smove source destination member


将指定成员 member 元素从 source 集合移动到 destination 集合。


smove myset myset2 pingguo


如果原集合不存在或不包含指定的元素,则不执行任何操作,仅返回 0。否则,移动成功。


如果目标集合里已经存在了此元素,那么命令只会移除原集合里的元素。


1268169-20210617072325594-886191239.png


八、sdiff 差集


返回第一个集合与其他集合之间的差异,也可以说是第一个集合中独有的元素。


sdiff myset myset2 myset3


注意,这里差集的结果来自前面的myset


九、sinter 交集


返回给定所有给定集合的交集,当给定集合当中有一个空集时,结果也为空集。


sinter myset myset2 myset3
sinter myset myset3


这里当比较3个集合myset myset2 myset3时,myset2里跟其他2个没有任何交集,所以整个结果返回空集。


1268169-20210617073610990-720308387.png


十、sunion 并集


返回给定集合的并集,不存在的集合 key 被视为空集。


sunion myset myset2 myset3


1268169-20210617073947259-84479505.png


集合利用差、并、交集可以用来实现一些场景的功能。比如社交软件中,把A用户关注的所有人放到一个set里,然后将B用户的粉丝放另一个set2里。

那么A, B两个用户共同关注的人就是交集了。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
12天前
|
存储 NoSQL 关系型数据库
Redis 集合(Set)
10月更文挑战第17天
27 5
|
12天前
|
存储 NoSQL 关系型数据库
Redis 有序集合(sorted set)
10月更文挑战第17天
30 4
|
14天前
|
存储 消息中间件 NoSQL
Redis 数据类型
10月更文挑战第15天
23 1
|
26天前
|
存储 分布式计算 NoSQL
大数据-40 Redis 类型集合 string list set sorted hash 指令列表 执行结果 附截图
大数据-40 Redis 类型集合 string list set sorted hash 指令列表 执行结果 附截图
24 3
|
2月前
|
存储 消息中间件 缓存
深入探析Redis常见数据类型及应用场景
深入探析Redis常见数据类型及应用场景
43 2
|
2月前
|
存储 NoSQL Redis
6)深度解密 Redis 的集合(Set)
6)深度解密 Redis 的集合(Set)
50 1
|
2月前
|
存储 JSON NoSQL
redis基本数据结构(String,Hash,Set,List,SortedSet)【学习笔记】
这篇文章是关于Redis基本数据结构的学习笔记,包括了String、Hash、Set、List和SortedSet的介绍和常用命令。文章解释了每种数据结构的特点和使用场景,并通过命令示例演示了如何在Redis中操作这些数据结构。此外,还提供了一些练习示例,帮助读者更好地理解和应用这些数据结构。
redis基本数据结构(String,Hash,Set,List,SortedSet)【学习笔记】
|
3月前
|
消息中间件 存储 NoSQL
redis实战——go-redis的使用与redis基础数据类型的使用场景(一)
本文档介绍了如何使用 Go 语言中的 `go-redis` 库操作 Redis 数据库
149 0
redis实战——go-redis的使用与redis基础数据类型的使用场景(一)
|
3月前
|
缓存 NoSQL Redis
【Azure Redis 缓存】Azure Cache for Redis 是否记录具体读/写(Get/Set)或删除(Del)了哪些key呢?
【Azure Redis 缓存】Azure Cache for Redis 是否记录具体读/写(Get/Set)或删除(Del)了哪些key呢?
|
3月前
|
SQL 缓存 NoSQL
【Azure Redis 缓存】使用Azure Redis服务时候,如突然遇见异常,遇见命令Timeout performing SET xxxxxx等情况,如何第一时间查看是否有Failover存在呢?
【Azure Redis 缓存】使用Azure Redis服务时候,如突然遇见异常,遇见命令Timeout performing SET xxxxxx等情况,如何第一时间查看是否有Failover存在呢?