Redis 五大数据类型之Set

本文详细介绍了 Redis 中 Set 数据类型的使用方法,包括如何添加、删除元素,查询元素是否存在,以及如何进行集合运算如交集、并集和差集等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上篇文章中我们了解了Redis的五大基础类型中的String,没有查看的小伙伴可以去查看一下,废话不多说上正题。

Set

Redis中 Set 的命令开头都是以s 开头的。

set中的值是不能重复的

127.0.0.1:6379> sadd myset hello   # 向set集合中添加元素
(integer) 1
127.0.0.1:6379> sadd myset shiweichao
(integer) 1
127.0.0.1:6379> smembers myset    # 查看set集合中的元素
1) "shiweichao"
2) "hello"
127.0.0.1:6379> sismember myset hello  # 判断set集合中是否拥有某个元素,存在则返回 1 ,不存在则返回 0
(integer) 1
127.0.0.1:6379> sismember muset woed
(integer) 0
127.0.0.1:6379> 

##############################################
# 获取set集合中元素中的个数
127.0.0.1:6379> scard myset  # 获取set集合中元素的个数
(integer) 2

##############################################
# 移除set集合中的元素值
127.0.0.1:6379> srem myset hello  # 移除set集合中的指定元素
(integer) 1

##############################################
set 无序不随机,抽随机

127.0.0.1:6379> smembers myset
1) "shiweichao"
2) "shiweichao2"
3) "shiweichao4"
4) "shiweichao3"
127.0.0.1:6379> srandmember myset  # 随机抽取一个元素
"shiweichao"
127.0.0.1:6379> srandmember myset
"shiweichao4"
127.0.0.1:6379> srandmember myset
"shiweichao2"
127.0.0.1:6379> srandmember myset
"shiweichao"
127.0.0.1:6379> srandmember myset
"shiweichao3"
127.0.0.1:6379> 
127.0.0.1:6379> srandmember myset 2  # 随机抽取指定个数的元素
1) "shiweichao2"
2) "shiweichao3"
127.0.0.1:6379> srandmember myset 2
1) "shiweichao"
2) "shiweichao2"
127.0.0.1:6379> srandmember myset 2
1) "shiweichao"
2) "shiweichao2"
127.0.0.1:6379> 

#############################################################
# 删除指定的key ,随机删除key

127.0.0.1:6379> spop myset   # 随机删除set集合中的元素
"shiweichao4"
127.0.0.1:6379> spop myset
"shiweichao"
127.0.0.1:6379> smembers myset
1) "shiweichao2"
2) "shiweichao3"
127.0.0.1:6379> 


#############################################################

# 将一个指定的值,移动到另外的一个集合

127.0.0.1:6379> sadd myset test
(integer) 1
127.0.0.1:6379> sadd myset test2
(integer) 1
127.0.0.1:6379> sadd myset test3
(integer) 1
127.0.0.1:6379> sadd myset2 set2
(integer) 1
127.0.0.1:6379> keys *
1) "myset"
2) "myset2"
127.0.0.1:6379> smove myset myset2 test   # 将指定的一个集合中的值,移动到另外一个集合中
(integer) 1
127.0.0.1:6379> smembers myset2
1) "set2"
2) "test"
127.0.0.1:6379> 

#############################################################
微博,B站,共同关注(交集)
数字集合类:
- 差集
- 交集
- 并集

127.0.0.1:6379> sadd key1 a
(integer) 1
127.0.0.1:6379> sadd key1 b
(integer) 1
127.0.0.1:6379> sadd key1 c
(integer) 1
127.0.0.1:6379> sadd key2 c
(integer) 1
127.0.0.1:6379> sadd key2 d
(integer) 1
127.0.0.1:6379> sadd key2 e
(integer) 1
127.0.0.1:6379> SDIFF key1 key2   # 差集
1) "b"
2) "a"
127.0.0.1:6379> SINTER key1 key2  # 交集
1) "c"
127.0.0.1:6379> SUNION key1 key2  # 并集
1) "a"
2) "c"
3) "b"
4) "d"
5) "e"
127.0.0.1:6379> 

例子:微博,A用户将所有关注的人放在一个set集合中,将他的粉丝也放在一个集合中。

​ 共同关注,共同爱好,二度好友,推荐好友

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值