Redis基本数据类型Set(集合)基本使用

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

Set(集合)

et中的值是不能重复的,set是无序的

set中的命令都是以"S"开头的

1 sadd (set) (value) 给set添加元素

127.0.0.1:6379[2]> sadd myset hello #创建一个set里面的值为hello
(integer) 1
127.0.0.1:6379[2]> sadd myset hello #给set再添加一个重复的值,成功元素的个数为0,因为不能重复
(integer) 0
127.0.0.1:6379[2]> smembers myset #查看myset这个set
1) "hello"

2 smembers (set)查看set里面的元素

127.0.0.1:6379[2]> sadd myset hello #创建一个set里面的值为hello
(integer) 1
127.0.0.1:6379[2]> sadd myset hello #给set再添加一个重复的值,成功元素的个数为0,因为不能重复
(integer) 0
127.0.0.1:6379[2]> smembers myset #查看myset这个set
1) "hello"

3 sismember (value)判断set里面有没有这个元素,有的话返回1,没有的话返回0

127.0.0.1:6379[2]> sismember myset hello #判断myset中有没有hello这个元素
(integer) 1  #有的话返回1
127.0.0.1:6379[2]> sismember myset hellohe #判断myset中有没有hellohe这个元素
(integer) 0 #没有的话返回0

4 scard(set)查看set里面的元素的个数

127.0.0.1:6379[2]> scard myset #查看set里面元素的个数
(integer) 3

5 srem(set)(value)从set中删除指定的元素

127.0.0.1:6379[2]> srem myset hello #从myset中删除hello这个元素
(integer) 1 #返回1表示删除成功
127.0.0.1:6379[2]> srem myset hello2232 #从myset中删除hello2232 这个元素
(integer) 0  #返回0表示删除失败,因为没有这个元素
127.0.0.1:6379[2]> smembers myset #查看myset里面的元素
1) "hello1"
2) "hello2"

6 smembers (set)(count)随机冲set取出几个(count)个元素

场景:随机数

127.0.0.1:6379[2]> smembers myset #查看myset中的全部元素
1) "hello1"
2) "hello3"
3) "hello2"
4) "hello4"
5) "hello5"
127.0.0.1:6379[2]> srandmember myset 1 #随机从myset中取出一个元素
1) "hello3"
127.0.0.1:6379[2]> srandmember myset 2   #随机从myset中取出2个元素
2) "hello2"
127.0.0.1:6379[2]> srandmember myset 3  #随机从myset中取出3个元素
1) "hello1"
2) "hello3"
3) "hello2"

7 spop (set)(count)随机移出几个元素

127.0.0.1:6379[2]> spop myset #随机移出1个元素
"hello4" 
127.0.0.1:6379[2]> spop myset 2 #随机移出2个元素
1) "hello5"
2) "hello3"
127.0.0.1:6379[2]> smembers myset #查看全部的元素
1) "hello1"
2) "hello2"

8 smove(需要移出的set)(移出到哪的set)(需要移出的元素)把一个set中具体的元素移到另外一个set中

127.0.0.1:6379[2]> sadd set1 a #创建新的set添加元素
(integer) 1
127.0.0.1:6379[2]> sadd set1 b  #创建新的set添加元素
(integer) 1
127.0.0.1:6379[2]> sadd set1 c  #创建新的set添加元素
(integer) 1
127.0.0.1:6379[2]> sadd set2 d  #创建新的set添加元素
(integer) 1
127.0.0.1:6379[2]> smove set1 set2 a  #把set1中的a元素指定移出到set2中
(integer) 1 
127.0.0.1:6379[2]> smembers set1 #查看set1
1) "b"
2) "c"
127.0.0.1:6379[2]> smembers set2 #查看set2
1) "a"
2) "d"

9 sdiff(set11)(set2)  sinter(set11)(set2)  sunion (set11)(set2) 求连个set的差集 交集 并集,那个set在前面就是以哪个set作为参照物

使用场景:

以下场景都是可以通过交集实现的

1 共同关注(A和B共同关注点人)

2 共同好友(我们之间的共同好友 )

3微博,A用户把所有关注点人放在一个set里,将它的粉丝也放在一个集合中 共同关注,共同好友,共同爱好,二度好友,推荐好友

数字集合类:

1 差集 sdiff(两个集合相差的元素)

2 交集 sinte (两个集合都有的元素)

3 并集  sunion (两个集合一共的元素)

127.0.0.1:6379[2]> sadd set a #创建set添加元素
(integer) 1 
127.0.0.1:6379[2]> sadd set b #创建set添加元素
(integer) 1
127.0.0.1:6379[2]> sadd set c #创建set添加元素
(integer) 1
127.0.0.1:6379[2]> sadd set2 c #创建set添加元素
(integer) 1
127.0.0.1:6379[2]> sadd set2 d #创建set添加元素
(integer) 1
127.0.0.1:6379[2]> sadd set2 e #创建set添加元素
(integer) 1
127.0.0.1:6379[2]> sdiff set set2 #查看set和set2的差集
1) "a"
2) "b"
127.0.0.1:6379[2]> sinter set set2 #查看set和set2的交集
1) "c"
127.0.0.1:6379[2]> sunion set set2 #查看set和set2的并集
1) "c"
1) "b"
2) "c"
3) "a"
4) "d"
5) "e"


相关实践学习
基于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
相关文章
|
5天前
|
存储 消息中间件 缓存
深入探析Redis常见数据类型及应用场景
深入探析Redis常见数据类型及应用场景
15 2
|
5天前
|
存储 NoSQL Redis
6)深度解密 Redis 的集合(Set)
6)深度解密 Redis 的集合(Set)
13 1
|
8天前
|
存储 JSON NoSQL
redis基本数据结构(String,Hash,Set,List,SortedSet)【学习笔记】
这篇文章是关于Redis基本数据结构的学习笔记,包括了String、Hash、Set、List和SortedSet的介绍和常用命令。文章解释了每种数据结构的特点和使用场景,并通过命令示例演示了如何在Redis中操作这些数据结构。此外,还提供了一些练习示例,帮助读者更好地理解和应用这些数据结构。
redis基本数据结构(String,Hash,Set,List,SortedSet)【学习笔记】
|
8天前
|
存储 前端开发 API
ES6的Set和Map你都知道吗?一文了解集合和字典在前端中的应用
该文章详细介绍了ES6中Set和Map数据结构的特性和使用方法,并探讨了它们在前端开发中的具体应用,包括如何利用这些数据结构来解决常见的编程问题。
ES6的Set和Map你都知道吗?一文了解集合和字典在前端中的应用
|
7天前
|
存储 数据处理 Python
Python中的Set集合:高效数据处理的利器
Python中的Set集合:高效数据处理的利器
16 0
|
2月前
|
索引 Python 容器
为什么Python中会有集合set类型?
为什么Python中会有集合set类型?
|
2月前
|
消息中间件 存储 NoSQL
redis实战——go-redis的使用与redis基础数据类型的使用场景(一)
本文档介绍了如何使用 Go 语言中的 `go-redis` 库操作 Redis 数据库
redis实战——go-redis的使用与redis基础数据类型的使用场景(一)
|
2月前
|
缓存 NoSQL Redis
【Azure Redis 缓存】Azure Cache for Redis 是否记录具体读/写(Get/Set)或删除(Del)了哪些key呢?
【Azure Redis 缓存】Azure Cache for Redis 是否记录具体读/写(Get/Set)或删除(Del)了哪些key呢?
|
2月前
|
SQL 缓存 NoSQL
【Azure Redis 缓存】使用Azure Redis服务时候,如突然遇见异常,遇见命令Timeout performing SET xxxxxx等情况,如何第一时间查看是否有Failover存在呢?
【Azure Redis 缓存】使用Azure Redis服务时候,如突然遇见异常,遇见命令Timeout performing SET xxxxxx等情况,如何第一时间查看是否有Failover存在呢?
|
16天前
|
存储 Java API
【数据结构】map&set详解
本文详细介绍了Java集合框架中的Set系列和Map系列集合。Set系列包括HashSet(哈希表实现,无序且元素唯一)、LinkedHashSet(保持插入顺序的HashSet)、TreeSet(红黑树实现,自动排序)。Map系列为双列集合,键值一一对应,键不可重复,值可重复。文章还介绍了HashMap、LinkedHashMap、TreeMap的具体实现与应用场景,并提供了面试题示例,如随机链表复制、宝石与石头、前K个高频单词等问题的解决方案。
23 6
【数据结构】map&set详解
下一篇
无影云桌面