Redis基本命令一Sets操作

Sets特点:元素无序不重复,Sets可以增删改查元素、判断元素有无、随机获取元素、多个Sets间可以做交|并|差集、计数元素

命令一览:SADD、SREM、SISMEMBER、SMEMBERS、SPOP、SRANDMEMBER、SCARD、SUNION、SUNIONSTORE、SDIFF、SDIFFSTORE、SINTER、SINTERSTORE、SMOVE

命令翻译自Redis,点击跳转:You can try redis command by yourself.Come on !

一、SADD

1、操作对象:Sets

2、用法:SADD key value1 value2 ... valueN

3、时间复杂度:O(1)

4、作用:向指定名为key的Set中添加一个或多个value,如果value已存在,则不会执行添加对应的value,如果key不存在则创建含有value列表的Set,如果key已存在但不是Set类型则返回错误

5、返回值:添加元素成功返回1,元素已存在返回0

举例:

> SADD superpowers "x-ray vision" "reflexes"
(integer) 2
> SADD superpowers "reflexes"
(integer) 0

二、SREM

1、操作对象:Sets

2、用法:SREM key value1 value2 ... valueN

3、时间复杂度:O(1)

4、作用:从Set中删除一个或多个value,如果value不存在,不对这个value执行删除,如果key存在但不是Set类型则返回错误

5、返回值:删除多个元素成功,返回移除元素的个数;删除某个元素成功,返回1,删除失败返回0

举例:

> SREM superpowers "reflexes"
1
> SREM superpowers "making pizza"
0
> SREM superpowers "flight" "x-ray vision"
2

三、SISMEMBER

1、操作对象:Sets

2、用法:SISMEMBER key value

3、时间复杂度:O(1)

4、作用:判断value是否在key所表示的Set中

5、返回值:元素存在Set中返回1,元素不存在或者key不存在则返回0

举例:

> SADD superpowers "flight" "x-ray vision"
(integer) 2
> SISMEMBER superpowers "flight"
(integer) 1
> SISMEMBER superpowers "pizza"
(integer) 0

四、SMEMBERS

1、操作对象:Sets

2、用法:SMEMBERS key

3、时间复杂度:O(n)

4、作用:获取Set的全部成员(元素)

5、返回值:

举例:

> SMEMBERS superpowers
1) "x-ray vision"
2) "flight"

五、SPOP

1、操作对象:Sets

2、用法:SPOP key

3、时间复杂度:O(1)

4、作用:随机弹出Set中的一个元素并返回给客户端,弹出的元素Set中就会不会存在了

5、返回值:弹出的元素,如果Set为空或者key不存在则返回nil

举例:

> SADD letters a b c d e f
(integer) 6
> SPOP letters
"f"
> SPOP letters
"f"
> SMEMBERS letters
1) "a"
2) "d"
3) "b"
4) "c"
5) "e"
> SPOP letter
(nil)

 六、SRANDMEMBER

1、操作对象:Sets

2、用法:SRANDMEMBER key number

3、时间复杂度:O(1)

4、作用:随机返回Set中的number数值对应的元素,元素仍存在Set中,不加number则随机返回一个元素,如果number是负数,返回元素可能重载重复

5、返回值:返回number数值对应的元素,如果Set为空或者key不存在则返回nil

举例:

> SADD letters a b c d e f
(integer) 1
> SPOP letters
"f"
> SMEMBERS letters
1) "a"
2) "d"
3) "b"
4) "c"
5) "e
> SRANDMEMBER letters 2
1) "b"
2) "e"
> SMEMBERS letters
1) "a"
2) "d"
3) "b"
4) "c"
5) "e"
> SRANDMEMBER letters -5
1) "d"
2) "b"
3) "d"
4) "e"
5) "b"

七、SCARD

1、操作对象:Sets

2、用法:SCARD key

3、时间复杂度:O(1)

4、作用:获取Set中元素的个数

5、返回值:如果Set为空或者key不存在则返回0

举例:

> SADD myset 0 1 2 3 4
(integer) 5
> SCARD myset
5
> SCARD KE
0

通用Sets:便于下面介绍的Set操作命令演示使用

> SADD myset1 a b c d
(integer) 4
> SADD myset2 a b e f
(integer) 4
> SADD myset3 a h n d
(integer) 4

八、SUNION

1、操作对象:Sets

2、用法:SUNION key1 key2 ... keyN

3、时间复杂度:O(N)(N表示合并的Set列表的元素总数)

4、作用:合并两个或多个Set的元素并全部返回,不会新建合并后的结果为Set,仅仅是把合并后元素集合返回给客户端,被合并的Set没有改变,并且没有新的Set生成

5、返回值:两个或多个Set的元素合集

举例:

> SADD superpowers "flight" "x-ray vision"
(integer) 2
> SADD powers "y-ray vision"
(integer) 1
> SADD sonpowers "z-ray vision"
(integer) 1
> SUNION superpowers powers sonpowers
1) "x-ray vision"
2) "z-ray vision"
3) "flight"
4) "y-ray vision"

九、SUNIONSTORE

1、操作对象:Sets

2、用法:SUNIONSTORE dstkey key1 key2 ... keyN

3、时间复杂度:O(N)(N表示合并的Set列表的元素总数)

4、作用:将两个或多个Set的元素合并后的结果集保存在dstkey中,并且dstkey中保存的任何元素都将被重写,如果dstkey不存在则新建dstkey

5、返回值:两个或多个Set的元素合集

举例:

> SUNION myset10 myset1 myset2 myset3
1) "f"
2) "a"
3) "n"
4) "d"
5) "b"
6) "h"
7) "c"
8) "e"

十、SDIFF 

1、操作对象:Sets

2、用法:SDIFF key1 key2 ... keyN

3、时间复杂度:O(N)(N表示所有Sets的总的元素个数)

4、作用:获取第一个Set与其他有效Sets差异的元素,key不存在会视为空的Set

5、返回值:如果第一个Set中存在其他Sets都没有的元素,则返回这些元素,如果其他Sets合集含有第一个Set中的全部元素,返回空的Set

举例:

> SDIFF myset1 myset2 myset3
1) "c"
> SADD myset4 a b c d e f
(integer) 6
> SDIFF myset1 myset2 myset3 myset4
(empty list or set)

 十一、SDIFFSTORE

1、操作对象:Sets

2、用法:SDIFFSTORE dstkey key1 key2 ... keyN

3、时间复杂度:O(N)(N表示所有Sets的总的元素个数)

4、作用:获取第一个Set与其他有效Sets差异的元素,并将差异元素添加到新Set:dstset中,key不存在会视为空的Set

5、返回值:返回差异元素个数

举例:

> SDIFF myset1 myset2 myset3
1) "c"
> SDIFFSTORE dstset myset1 myset2 myset3
1
> SMEMBERS dstset
1) "c"

十二、SINTER

1、操作对象:Sets

2、用法:SINTER key1 key2 ... keyN

3、时间复杂度:O(N*M)(最坏情况是:N表示最小Set的元素个数,M表示Sets的个数)

4、作用:获取Sets的元素交集,如果对单个key做交集,相当于SMEMBERS

5、返回值:如果是一个key则返回Set中的所有元素;如果是多个key则返回Sets的交集,但是Sets中有一个key不存在,则返回空的Set,因为与空Set做交集,结果还是空的Set

举例:

> SINTER myset1 myset2 myset3
1) "a"
> SINTER myset1 myset2
1) "a"
2) "b"
> SINTER myset1 myset2 myset3 myset4
(empty list or set)

十三、SINTERSTORE

1、操作对象:Sets

2、用法:SINTERSTORE dstkey key1 key2 ... keyN

3、时间复杂度:O(N*M)(最坏情况是:N表示最小Set的元素个数,M表示Sets的个数)

4、作用:获取Sets的元素交集,并将差异元素添加到新Set:dstkey中

5、返回值:交集元素个数

举例:

> SINTERSTORE dstset myset1 myset2 myset3
1
> SINTERSTORE dstset2 myset1 myset2
2
> SMEMBERS dstset
1) "a"
> SMEMBERS dstset2
1) "a"
2) "b"

十四、SMOVE

1、操作对象:Sets

2、用法:SMOVE srckey dstkey member

3、时间复杂度:O(1)

4、作用:原子的移动srckey的member到dstkey中;如果srckey不存在或者不含有member,则不执行操作或者返回0,否则member会从srckey中删除并添加到dstkey,即使dstkey中已存在member依然会执行成功;如果dstkey不存在则会新建

5、返回值:如果srckey或者dstkey中保存的不是Set类型则返回错误;成功返回1,失败返回0

举例:

> SMOVE myset1 myset2 c
(integer) 1
> SMEMBERS myset1
1) "a"
2) "d"
3) "b"
> SMEMBERS myset2
1) "f"
2) "e"
3) "a"
4) "b"
5) "c"

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值