Redis 集合set常用命令总结

Redis中文官网命令大全

set常用命令汇总

命令语法语义
saddsadd key member [member …]添加若干指定元素member到key集合中,并返回成功添加元素个数
spopspop key [count]与srandmember相似,随机移除并返回集合key中若干随机元素
sremsrem key member [member … ]在集合key中移除指定元素,并返回成功移除元素个数
scardscard key返回指定集合key中的元素数
sismembersismember key member返回集合key中是否存在指定元素member
smemberssmembers key返回集合key的所有元素
srandmembersrandmember key [count]随机返回集合key中的一个元素,或随机返回集合key中的count的元素
smovesmove source destination member将指定元素member从集合source中移动到集合destination中
sintersinter key [key …]返回所有指定集合中元素的交集
sinterstoresinterstore destination key [key …]返回所有指定集合中元素的交集,并将结果保存在集合destination中
sunionsunion key [key …]返回所有指定集合中元素的并集
sunionstoresunionstore destination key [key …]返回所有指定集合中元素的并集,并将结果保存在集合destination中
sdiffsdiff key [key …]返回一个集合与其余指定集合的差集
sdiffstoresdiffstore destination key [key …]返回一个集合与其余指定集合的差集,并将结果保存在集合destination中

命令演示

增加操作

sadd

使用sadd命令想集合key中添加若干指定member元素,返回成功添加到集合key中的元素数量。

如果集合key不存在,则先新建集合key,再将若干member元素添加到集合key中。

如果指定将要添加的某元素member已经存在与集合key中,则忽略该元素的添加。

127.0.0.1:6379> sadd myset v1 v2 v3
(integer) 3
127.0.0.1:6379> sadd myset v3 v4 v5
(integer) 2
127.0.0.1:6379> smembers myset
1) "v4"
2) "v3"
3) "v2"
4) "v1"
5) "v5"

删除操作

spop

使用spop命令从指定集合key中随机移除并返回若干元素,若指定集合key或集合key中没有元素,则返回空。

如果只提供了参数key,则从集合key中随机移除并返回一个元素。

如果提供了参数count,count为正整数时,则从集合key中随机移除并返回count个元素,若干count值大于等于集合key的总元素个数,则将集合key中全部元素移除并返回。

127.0.0.1:6379> smembers myset
1) "v4"
2) "v2"
3) "v3"
4) "v1"
5) "v5"
127.0.0.1:6379> smembers neset
(empty list or set)
127.0.0.1:6379> spop myset
"v5"
127.0.0.1:6379> spop myset 2
1) "v3"
2) "v4"
127.0.0.1:6379> spop myset 5
1) "v1"
2) "v2"
127.0.0.1:6379> spop myset 5
(empty list or set)

srem

使用srem从集合key中移除指定的元素,如果集合key中不存在某个指定元素member则忽略,移除后返回成功移除的元素个数,集合key不存在或集合key为空时返回0

127.0.0.1:6379> smembers myset
1) "v3"
2) "v2"
3) "v1"
127.0.0.1:6379> srem neset v1
(integer) 0
127.0.0.1:6379> srem myset v4 v5
(integer) 0
127.0.0.1:6379> srem myset v1 v3 v5
(integer) 2

查找操作

scard

使用scard命令获取指定集合key中的元素数,如果集合key不存在,则返回0

127.0.0.1:6379> sadd myset v1 v2
(integer) 2
127.0.0.1:6379> scard myset
(integer) 2
127.0.0.1:6379> scard neset
(integer) 0

sismember

使用sismember判断集合key中是否存在元素member。

如果集合key中存在元素member,则返回1。

如果集合key中不存在元素member,或者集合key不存在,则返回0。

127.0.0.1:6379> sadd myset v1 v2
(integer) 2
127.0.0.1:6379> sismember myset v3
(integer) 0
127.0.0.1:6379> sismember neset v2
(integer) 0
127.0.0.1:6379> sismember myset v2
(integer) 1

smembers

使用smembers命令返回指定集合key中的所有元素,如果集合key不存在,返回空。

127.0.0.1:6379> sadd myset v1 v2
(integer) 2
127.0.0.1:6379> smembers myset
1) "v2"
2) "v1"

srandmember

使用srandmember命令返回集合key中若干随机元素。

若仅提供参数key,则随机返回集合key中的一个元素,若key不存在返回空。

若提供了参数count,则有如下四种情况:

  • count为0,则返回空。
  • 若count为正整数,且count小于集合key中元素数,则随机返回集合key中count个不重复的元素。
  • 若count为正整数,且count大于等于集合key中元素数,则返回集合中的全部元素。
  • 若count为负整数,则随机返回集合key中count的绝对值个可能出现重复的元素。
127.0.0.1:6379> smembers myset
1) "v4"
2) "v3"
3) "v2"
4) "v1"
127.0.0.1:6379> srandmember myset 0
(empty list or set)
127.0.0.1:6379> srandmember myset 2
1) "v1"
2) "v4"
127.0.0.1:6379> srandmember myset 2
1) "v2"
2) "v4"
127.0.0.1:6379> srandmember myset 6
1) "v1"
2) "v2"
3) "v3"
4) "v4"
127.0.0.1:6379> srandmember myset -5
1) "v3"
2) "v1"
3) "v2"
4) "v4"
5) "v3"
127.0.0.1:6379> srandmember myset -3
1) "v1"
2) "v4"
3) "v4"

多集合操作

smove

使用smove命令将指定元素member从集合source移动到集合destination中。

如果集合source存在且集合内存在指定元素member,且集合destination中没有元素member,则将元素member从集合source中移除,并且添加到集合destination中,结果返回1。

如果集合source不存在或集合内不存在指定元素member,则不执行任何操作并返回0。

如果集合source存在且集合内存在指定元素member,但集合destination中已经存在元素member,则仅将元素member从source移除,结果返回1。

127.0.0.1:6379> sadd set1 v1 v2
(integer) 2
127.0.0.1:6379> sadd set2 v2
(integer) 1
127.0.0.1:6379> smove set3 set4 v1
(integer) 0
127.0.0.1:6379> smove set1 set2 v1
(integer) 1
127.0.0.1:6379> smove set1 set2 v2
(integer) 1
127.0.0.1:6379> smembers set1
(empty list or set)
127.0.0.1:6379> smembers set2
1) "v1"
2) "v2"

交集

sinter

使用sinter命令返回所有指定集合中元素的交集,指定集合数量可以大于2。当任一指定集合为空或不存在时,返回空。

127.0.0.1:6379> sadd set1 v1 v2 v3
(integer) 3
127.0.0.1:6379> sadd set2 v2 v3 v4
(integer) 3
127.0.0.1:6379> sinter set1 set2
1) "v3"
2) "v2"
127.0.0.1:6379> sinter set1 set2 set3
(empty list or set)

sinterstore

使用sinterstore命令获取所有指定集合中元素的交集,规则与sinter相同,只是并不直接返回交集,而是将该交集保存在集合destination中,如果集合destination存在,则重写集合destination。

127.0.0.1:6379> sadd set1 v1 v2 v3
(integer) 3
127.0.0.1:6379> sadd set2 v2 v3 v4
(integer) 3
127.0.0.1:6379> sadd set3 v5
(integer) 1
127.0.0.1:6379> sinterstore set3 set1 set2
(integer) 2
127.0.0.1:6379> smembers set3
1) "v2"
2) "v3"

并集

sunion

使用sunion命令返回所有指定集合中元素的并集,不存在的集合key被视为空集。

127.0.0.1:6379> sadd set1 v1 v2 v3
(integer) 3
127.0.0.1:6379> sadd set2 v2 v3 v4
(integer) 3
127.0.0.1:6379> sunion set1 set2 set3
1) "v3"
2) "v2"
3) "v4"
4) "v1"

sunionstore

使用sunionstore命令返回所有指定集合中元素的并集,规则与suinon相同,只是并不直接返回并集,而是将该并集保存在集合destination中,如果集合destination存在,则重写集合destination。

127.0.0.1:6379> sadd set1 v1 v2 v3
(integer) 3
127.0.0.1:6379> sadd set2 v2 v3 v4
(integer) 3
127.0.0.1:6379> sadd set3 v5
(integer) 1
127.0.0.1:6379> sunionstore set3 set1 set2
(integer) 4
127.0.0.1:6379> smembers set3
1) "v3"
2) "v2"
3) "v4"
4) "v1"

差集

sdiff

使用sdiff命令返回第一个参数集合与其余集合的差集,不存在的集合key被视为空集。

127.0.0.1:6379> sadd set1 v1 v2 v3
(integer) 3
127.0.0.1:6379> sadd set2 v2 v3 v4
(integer) 3
127.0.0.1:6379> sdiff set1 set2
1) "v1"

sdiffstore

使用sdiffstore命令返回第一个参数集合与其余集合的差集,规则与sdiff相同,只是并不直接返回差集,而是将该差集保存在集合destination中,如果集合destination存在,则重写集合destination。

127.0.0.1:6379> sadd set1 v1 v2 v3
(integer) 3
127.0.0.1:6379> sadd set2 v2 v3 v4
(integer) 3
127.0.0.1:6379> sadd set3 v5
(integer) 1
127.0.0.1:6379> sdiffstore set3 set1 set2
(integer) 1
127.0.0.1:6379> smembers set3
1) "v1"
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

7rulyL1ar

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值