sadd 向set集合中加入一个或多个元素

127.0.0.1:6379> sadd myset a b c d e a c
(integer) 5
127.0.0.1:6379> smembers myset
1) "c"
2) "b"
3) "d"
4) "a"
5) "e"
#可见,set集合,不能存相同的元素,已经存在于集合的成员元素将被忽略

smembers 返回set集合中所有的元素

127.0.0.1:6379> smembers myset
1) "c"
2) "b"
3) "d"
4) "a"
5) "e"

srem 移除set集合一个或多个元素

127.0.0.1:6379> smembers myset
1) "c"
2) "b"
3) "d"
4) "a"
5) "e"
127.0.0.1:6379> clear
127.0.0.1:6379> srem myset a b c
(integer) 3
127.0.0.1:6379> smembers myset
1) "d"
2) "e"

#此时再向myset中添加元素,可见set集合是无序的
127.0.0.1:6379> sadd myset a b c
(integer) 3
127.0.0.1:6379> smembers myset
1) "b"
2) "d"
3) "a"
4) "c"
5) "e"

scard 返回set集合中元素的个数

127.0.0.1:6379> smembers myset
1) "b"
2) "a"
3) "c"
127.0.0.1:6379> scard myset
(integer) 3

sismember 查看set集合中是否存在某个元素

127.0.0.1:6379> smembers myset
1) "b"
2) "a"
3) "c"
127.0.0.1:6379> sismember myset s
(integer) 0    #存在
127.0.0.1:6379> sismember myset a
(integer) 1    #不存在

smove 将 member 元素从 source 集合移动到 destination 集合

#SMOVE 是原子性操作。

#如果 source 集合不存在或不包含指定的 member 元素,则 SMOVE 命令不执行任何操作,仅返回 0 。否则, member 元素从 source 集合中被移除,并添加到 destination 集合中去。

#当 destination 集合已经包含 member 元素时, SMOVE 命令只是简单地将 source 集合中的 member 元素删除。

#当 source 或 destination 不是集合类型时,返回一个错误。

127.0.0.1:6379> sadd source a b c d
(integer) 4
127.0.0.1:6379> sadd destination e f g
(integer) 3
127.0.0.1:6379> smove source destination d   #当destination不存在时,则会先创建,在移动,但是,当移动的元素不存在时,则不会创建
(integer) 1
127.0.0.1:6379> smembers source
1) "b"
2) "a"
3) "c"
127.0.0.1:6379> smembers destination
1) "d"
2) "g"
3) "f"
4) "e"

srandmember 随机返回一个或者多个元素

127.0.0.1:6379> smembers myset
1) "kang"
2) "jack"
3) "tony"
4) "tom"
5) "qiyuan"
127.0.0.1:6379> srandmember myset 2  #随机返回2个元素,默认返回1个
1) "qiyuan"
2) "jack"
127.0.0.1:6379> srandmember myset 3
1) "tom"
2) "tony"
3) "kang"
127.0.0.1:6379> srandmember myset 3
1) "tony"
2) "jack"
3) "kang"

sinter 返回所指定集合的交集

127.0.0.1:6379> sadd set1 a b c d e
(integer) 5
127.0.0.1:6379> sadd set2 b c d f g h
(integer) 6
127.0.0.1:6379> sadd set3 h i j k
(integer) 4
127.0.0.1:6379> sinter set1 set2
1) "d"
2) "b"
3) "c"
127.0.0.1:6379> sinter set1 set2 set3
(empty array)

sinterstore 返回所指定集合的交集,并存储到另一个集合中

127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> clear
127.0.0.1:6379> sadd set1 a b c d
(integer) 4
127.0.0.1:6379> sadd set2 c d e f
(integer) 4
127.0.0.1:6379> sadd set3 d g h j
(integer) 4
127.0.0.1:6379> sinterstore destination set1 set2 set3    #返回交集,存储到destination中
(integer) 1
127.0.0.1:6379> smembers destination
1) "d"

sdiff 返回集合的差集

#返回的是第一个集合 与 之后所有集合的差集
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> sadd set1 a b c d
(integer) 4
127.0.0.1:6379> sadd set2 c d e f
(integer) 4
127.0.0.1:6379> sadd set3 d g h j
(integer) 4
127.0.0.1:6379> sdiff set1 set2 set3    #返回的是 set1 与 set2和set3的差集
1) "b"
2) "a"
127.0.0.1:6379> sdiff set2 set3         #返回的是 set2 与 set3的差集
1) "c"
2) "e"
3) "f"

sdiffstore 返回差集 存储到一个集合中

127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> sadd set1 a b c d
(integer) 4
127.0.0.1:6379> sadd set2 c d e f
(integer) 4
127.0.0.1:6379> sadd set3 d g h j
(integer) 4
127.0.0.1:6379> sdiffstore destination set1 set2 set3 #返回的差集,存储到destination中
(integer) 2
127.0.0.1:6379> smembers distination
(empty array)
127.0.0.1:6379> smembers destination
1) "b"
2) "a"

sunion 返回所有集合的并集

127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> sadd set1 a b c d
(integer) 4
127.0.0.1:6379> sadd set2 c d e f
(integer) 4
127.0.0.1:6379> sadd set3 d g h j
(integer) 4
127.0.0.1:6379> sunion set1 set2 set3
1) "j"
2) "b"
3) "d"
4) "h"
5) "a"
6) "c"
7) "e"
8) "f"
9) "g"

sunionstore 返回所有几个的并集,并存储到另一个集合中

127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> sadd set1 a b c d
(integer) 4
127.0.0.1:6379> sadd set2 c d e f
(integer) 4
127.0.0.1:6379> sadd set3 d g h j
(integer) 4
127.0.0.1:6379> sunionstore destination set1 set2 set3
(integer) 9
127.0.0.1:6379> smembers destination
1) "j"
2) "b"
3) "d"
4) "h"
5) "a"
6) "c"
7) "e"
8) "f"
9) "g"

spop 随机移除元素

127.0.0.1:6379> smembers myset
 1) "h"
 2) "a"
 3) "c"
 4) "f"
 5) "e"
 6) "b"
 7) "k"
 8) "j"
 9) "i"
10) "g"
11) "d"
12) "l"
127.0.0.1:6379> spop myset
"g"
127.0.0.1:6379> spop myset
"i"
127.0.0.1:6379> spop myset
"j"
127.0.0.1:6379> spop myset 3
1) "k"
2) "a"
3) "c"