Redis系列-存储篇set主要操作函数小结

本文总结了Redis中Set类型的常用操作,包括添加成员、查询成员数量、判断成员是否存在、随机获取成员、移除成员以及集合的并集、交集和差集等操作。这些操作具有O(1)的时间复杂度,适用于高效的数据存储和检索。

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

        最近,总是以“太忙“为借口,很久没有blog了,凡事贵在恒,希望我能够坚持不懈,毕竟在blog的时候,也能提升自己。废话不说了,直奔主题”set“

redis set 是string类型对象的无序集合,set不管存储多少对象,对存储对象的add,remove和test操作的时间复杂度是O(1)。set最多能包含 232 - 1 个member。

1、增加

语法:sadd key member[member...]

        解释:对特定key的set增加一个或多个值,返回是增加元素的个数。注意:对同一个member多次add,set中只会保留一份。

[root@xsf001 ~]# redis-cli 
redis 127.0.0.1:6379> sadd stu zhangsan lisi wangwu #新增
(integer) 3
redis 127.0.0.1:6379> smembers stu    #得到set的所有member
1) "wangwu"
2) "lisi"
3) "zhangsan"
redis 127.0.0.1:6379> sadd stu zhangsan #增加存在的member
(integer) 0
redis 127.0.0.1:6379> smembers stu
1) "wangwu"
2) "lisi"
3) "zhangsan"
redis 127.0.0.1:6379> sadd tech wangwu liming joe
(integer) 3
redis 127.0.0.1:6379> sadd tech jim
(integer) 1
redis 127.0.0.1:6379> smembers tech
1) "jim"
2) "liming"
3) "wangwu"
4) "joe"

  2、查询

a)smembers

语法:smembers key

解释:获取set中的所有member

redis 127.0.0.1:6379> smembers stu
1) "wangwu"
2) "lisi"
3) "zhangsan"
redis 127.0.0.1:6379> smembers tech
1) "jim"
2) "liming"
3) "wangwu"
4) "joe"

b)sismember

语法:sismember key member

解释:判断值是否是set的member。如果值是set的member返回1,否则,返回0

redis 127.0.0.1:6379> sismember tech jim #jim 是set的member
(integer) 1
redis 127.0.0.1:6379> sismember tech jim001 #jim001 不是set的member
(integer) 0
c)scard

语法:scard key

解释:返回set的member个数,如果set不存在,返回0

redis 127.0.0.1:6379> scard tech  # tech 存在
(integer) 4
redis 127.0.0.1:6379> scard stud #stud 不存在
(integer) 0
redis 127.0.0.1:6379> scard stu
(integer) 4
d)srandmember

语法:srandmember key

解释:从set中返回一个随机member

redis 127.0.0.1:6379> srandmember stu
"zhangsan"
redis 127.0.0.1:6379> srandmember stu
"zhangsan"
redis 127.0.0.1:6379> srandmember stu
"wangwu"
redis 127.0.0.1:6379> srandmember stu
"zhangsan01"

3、删除

a)spop

语法:spop key

解释:移除并返回一个随机member

redis 127.0.0.1:6379> smembers stu #pop前
1) "zhangsan01"
2) "wangwu"
3) "lisi"
4) "zhangsan"
redis 127.0.0.1:6379> spop stu  #移除一个随机member
"lisi"
redis 127.0.0.1:6379> smembers stu #pop后
1) "zhangsan01"	
2) "wangwu"
3) "zhangsan"
b)srem

语法:srem key member [member ...]

解释:移除一个或多个member

redis 127.0.0.1:6379> smembers tech
1) "jim"
2) "liming"
3) "wangwu"
4) "joe"
redis 127.0.0.1:6379> srem tech jim   #移除jim
(integer) 1
redis 127.0.0.1:6379> smembers tech   
1) "liming"
2) "wangwu"
3) "joe"
redis 127.0.0.1:6379> srem tech liming joe #移除多个member
(integer) 2
redis 127.0.0.1:6379> smembers tech
1) "wangwu"
c)smove

语法:smove source destination member

解释:将source中的member移动到destination

redis 127.0.0.1:6379> smembers tech   #smove前
1) "wangwu"
redis 127.0.0.1:6379> smembers stu
1) "zhangsan01"
2) "wangwu"
3) "zhangsan"
redis 127.0.0.1:6379> smove stu tech zhangsan  #将zhangsan 从stu移动到tech
(integer) 1
redis 127.0.0.1:6379> smembers stu #smove后
1) "zhangsan01"
2) "wangwu"
redis 127.0.0.1:6379> smembers tech
1) "wangwu"
2) "zhangsan"


4、其他

a)并集

语法:sunion key[key...]

解释:多个set的并集

redis 127.0.0.1:6379> smembers stu
1) "zhangsan01"
2) "wangwu"
redis 127.0.0.1:6379> sunion stu
1) "zhangsan01"
2) "wangwu"
redis 127.0.0.1:6379> smembers tech
1) "wangwu"
2) "zhangsan"
redis 127.0.0.1:6379> sunion stu tech
1) "zhangsan01"
2) "wangwu"
3) "zhangsan"

b)把并集结果存储到set

语法:sunionstore destination key [key ...]

解释:求多个set并集,并把结果存储到destination 

redis 127.0.0.1:6379> sunionstore same stu tech #把stu tech并集结果存储在union
(integer) 3
redis 127.0.0.1:6379> smembers union
1) "zhangsan01"
2) "wangwu"
3) "zhangsan"

 c)交集

语法:sinter key[key...]

解释:多个set的交集

redis 127.0.0.1:6379> smembers stu
1) "zhangsan01"
2) "wangwu"
redis 127.0.0.1:6379> smembers tech
1) "wangwu"
2) "zhangsan"
redis 127.0.0.1:6379> sinter stu tech
1) "wangwu"

d)把交集结果存储到指定set

语法:sinterstore destination key [key ...]

解释:把多个set的交集结果存储到destination 

redis 127.0.0.1:6379> sinterstore inter stu tech
(integer) 1
redis 127.0.0.1:6379> smembers inter
1) "wangwu"

      e) set中在其他set中不存在member

语法:sdiff key[key ...]

redis 127.0.0.1:6379> 
redis 127.0.0.1:6379> smembers stu
1) "zhangsan01"
2) "wangwu"
redis 127.0.0.1:6379> smembers tech
1) "wangwu"
2) "zhangsan"
redis 127.0.0.1:6379> sdiff stu tech
1) "zhangsan01"
redis 127.0.0.1:6379> sdiff tech stu
1) "zhangsan"

f)把set中在其他set中不存在的member存储到新的set

语法:sdiffstore key[key...]

redis 127.0.0.1:6379> sdiffstore diff stu tech
(integer) 1
redis 127.0.0.1:6379> smembers diff
1) "zhangsan01"


主要参考:

http://redis.io/commands#set

http://redis.io/topics/data-types



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值