Redis 的数据类型 - Set 集合类型:无序集合

SADD:向集合中添加元素

  语法:SADD key member [...]

    SADD web www.baidu.com

    SADD web www.sina.com.cn www.amazon.com

    SADD web www.taobao.com www.bilibili.com

127.0.0.1:6379> SADD web www.baidu.com
(integer) 1

127.0.0.1:6379> SADD web www.sina.com.cn www.amazon.com
(integer) 2

127.0.0.1:6379> SADD web www.taobao.com www.bilibili.com
(integer) 2

127.0.0.1:6379> SMEMBERS web
1) "www.amazon.com"
2) "www.sina.com.cn"
3) "www.baidu.com"
4) "www.taobao.com"
5) "www.bilibili.com"

 

SMEMBERS:返回指定集合中的元素

  语法:SMEMBERS key

    SMEMBERS web

 

SISMEMBER:检测 member 是否是集合中的成员

  语法:SISMEMBER key member

    SISMEMBER web www.baidu.com

    SISMEMBER web www.google.com  #不存在返回 0 #

127.0.0.1:6379> SISMEMBER web www.baidu.com
(integer) 1

127.0.0.1:6379> SISMEMBER web www.google.com
(integer) 0

 

SREM:删除集合中的一个或者多个成员

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

    SREM web www.baidu.com

    SREM web www.taobao.com www.bilibili.com  #当同时删除多个 member,有不存在的或删除失败的 member 时,返回值时删除成功的个数#

127.0.0.1:6379> SMEMBERS web
1) "www.baidu.com"
2) "www.taobao.com"
3) "www.sina.com.cn"
4) "www.bilibili.com"
5) "www.amazon.com"

127.0.0.1:6379> SREM web www.taobao.com www.baidu.com
(integer) 2

127.0.0.1:6379> SREM web www.taobao.com www.bilibili.com
(integer) 1

 

SPOP:删除并返回集合中的一个随机元素

  语法:SPOP key

    SADD course php java ios android c c++ js

    SPOP course

    SMEMBERS course

127.0.0.1:6379> SADD course php java ios android c c++ js
(integer) 7

127.0.0.1:6379> SPOP course
"php"

127.0.0.1:6379> SMEMBERS course
1) "c"
2) "ios"
3) "android"
4) "c++"
5) "java"
6) "js"

 

SRANDMEMBER:随机返回集合中的元素

  语法:SRANDMEMBER key count

  # count 如果小于集合中的元素,返回 count 个随机元素的集合数组;如果 count 大于集合中元素的个数,这时候会返回整个集合,如果 count 为负数,返回数组的长度是 count 的绝对值,数组中的成员可能出现重复#

    SRANDMEMBER course

    SRANDMEMBER course 2

    SRANDMEMBER course 50

    SRANDMEMBER course -2

127.0.0.1:6379> SRANDMEMBER course
"ios"

127.0.0.1:6379> SRANDMEMBER course 2
1) "c"
2) "java"

127.0.0.1:6379> SRANDMEMBER course 50
1) "ios"
2) "c++"
3) "android"
4) "c"
5) "js"
6) "java"

127.0.0.1:6379> SRANDMEMBER course -2
1) "ios"
2) "js"

 

SDIFF:返回集合间的差集

  语法:SDIFF key key ...

    SADD testSet1 a b c d e

    SADD testSet2 b c d e f

    SDIFF testSet1 testSet2  #在集合 1 中,不在集合 2 中的元素#

    SDIFF testSet2 testSet1  #在集合 2 中,不在集合 1 中的元素#

    SADD testSet3 x y z 

    SDIFF testSet1 testSet2 testSet3  #在两个以上的集合中取差集的时候,先对前两个进行取值,所得到的结果再与后面的集合进行对比,当差集为空的时候回报错#

127.0.0.1:6379> SADD testSet1 a b c d e
(integer) 5

127.0.0.1:6379> SADD testSet2 b c d e f
(integer) 5

127.0.0.1:6379> SDIFF testSet1 testSet2
1) "a"

127.0.0.1:6379> SDIFF testSet2 testSet1
1) "f"
127.0.0.1:6379> SADD testSet3 x y z 
(integer) 4

127.0.0.1:6379> SDIFF testSet1 testSet2 testSet3
1) "a"

127.0.0.1:6379> SADD testSet3 x y z a
(integer) 4

127.0.0.1:6379> SDIFF testSet1 testSet2 testSet3
(empty list or set)

 

SINTER:返回集合间的交集

  语法:SINTER key key...

    SINTER testSet1 testSet2

    SINTER testSet1 testSet2 testSet3

    SADD testSet3 b

127.0.0.1:6379> SINTER testSet1 testSet2
1) "c"
2) "b"
3) "d"
4) "e"

127.0.0.1:6379> SINTER testSet1 testSet2 testSet3
(empty list or set)

127.0.0.1:6379> SADD testSet3 b
(integer) 1

127.0.0.1:6379> SINTER testSet1 testSet2 testSet3
1) "b"

 

 

SUNION:返回集合中并集

  语法:SUNION key key...

    SUNION testSet1 testSet2

    SUNION testSet1 testSet2 testSet3

127.0.0.1:6379> SUNION testSet1 testSet2
1) "a"
2) "c"
3) "f"
4) "b"
5) "d"
6) "e"

127.0.0.1:6379> SUNION testSet1 testSet2 testSet3
1) "a"
2) "c"
3) "x"
4) "f"
5) "b"
6) "d"
7) "z"
8) "e"
9) "y"

 

SCARD:返回集合中元素个数

  语法:SCARD key

    SCARD testSet1

127.0.0.1:6379> SCARD testSet1
(integer) 5

 

SDIFFSTORE:将差集结果保存到指定集合中

  语法:SDIFFSTORE destination key key ...

    SDIFFSTORE diffSet testSet1 testSet2

    SMEMBERS diffSet  #返回值为集合 1 和 2 的差集 a #

    SADD diffSet b  #再添加一个元素到 diffSet 里,这是 diffSet 里有两个元素了#

    SMEMBERS diffSet

    SDIFFSTORE diffSet testSet2 testSet1

    SMEMBERS diffSet  #原本 diffSet 里原有的值被清空了,重新写入新值 f #

127.0.0.1:6379> SDIFFSTORE diffSet testSet1 testSet2
(integer) 1

127.0.0.1:6379> SMEMBERS diffSet
1) "a"

127.0.0.1:6379> SADD diffSet b
(integer) 1

127.0.0.1:6379> SMEMBERS diffSet
1) "a"
2) "b"

127.0.0.1:6379> SDIFFSTORE diffSet testSet2 testSet1
(integer) 1

127.0.0.1:6379> SMEMBERS diffSet
1) "f"

 

 

SINTERSTORE:将交集的结果保存在指定集合中

  语法:SINTERSTORE destination key key ...

 

SUNIONSTORE:将并集的结果保存到指定集合中

  语法:SUNIONSTORE destination key key ...

 

SMOVE:将集合中元素移动另外一个集合中

  语法:SMOVE source destination member  #原子操作#

    SMOVE testSet2 testSet1 f

    SADD testSet2 f

    SMOVE testSet2 testSet1 f

    SMEMBERS testSet2

127.0.0.1:6379> SMEMBERS testSet1
1) "a"

127.0.0.1:6379> SMEMBERS testSet2
1) "c"
2) "f"
3) "b"
4) "d"
5) "e"

127.0.0.1:6379> SMOVE testSet2 testSet1 f
(integer) 1

127.0.0.1:6379> SMEMBERS testSet2
1) "c"
2) "b"
3) "d"
4) "e"

127.0.0.1:6379> SMEMBERS testSet1
1) "a"
2) "f"

 

posted @ 2017-06-28 19:27  Shuo_128  阅读(197)  评论(0编辑  收藏  举报