# set命令
# SADD
# 语法
SADD key member [member ...]
# 描述
向集合中添加一个或多个成员
# 参数
- key
存储该集合的键的名称
- member
要添加到集合中的一个或多个成员
# 示例
> SADD myset "Hello" "World"
(integer) 2
> SADD myset "World"
(integer) 0
> SMEMBERS myset
1) "Hello"
2) "World"
> SADD myset "Hello" "World"
(integer) 2
> SADD myset "World"
(integer) 0
> SMEMBERS myset
1) "Hello"
2) "World"
# SCARD
# 语法
SCARD key
# 描述
获取集合的成员数量
# 参数
- key
存储该集合的键的名称
# 示例
> SADD myset "Hello"
(integer) 1
> SADD myset "World"
(integer) 1
> SCARD myset
(integer) 2
# SDIFF
# 语法
SDIFF key [key ...]
# 描述
返回多个集合的差集
# 参数
- key
拿第一个集合,减去后面所有的集合,剩下的就是结果
# 示例
key1 = {a,b,c,d}
key2 = {c}
key3 = {a,c,e}
SDIFF key1 key2 key3 = {b,d}
> SADD key1 "a"
(integer) 1
> SADD key1 "b"
(integer) 1
> SADD key1 "c"
(integer) 1
> SADD key2 "c"
(integer) 1
> SADD key2 "d"
(integer) 1
> SADD key2 "e"
(integer) 1
> SDIFF key1 key2
1) "a"
2) "b"
# SDIFFSTORE
# 语法
SDIFFSTORE destination key [key ...]
# 描述
计算差集并存储到新集合
# 参数
- key
一个或多个集合键。返回的结果是:属于第一个集合,但不存在于后续任何集合中的成员
- destination
用于存储结果集的键
# 示例
> SADD key1 "a"
(integer) 1
> SADD key1 "b"
(integer) 1
> SADD key1 "c"
(integer) 1
> SADD key2 "c"
(integer) 1
> SADD key2 "d"
(integer) 1
> SADD key2 "e"
(integer) 1
> SDIFFSTORE key key1 key2
(integer) 2
> SMEMBERS key
1) "a"
2) "b"
# SINTER
# 语法
SINTER key [key ...]
# 描述
返回多个集合的交集
# 参数
- key
一个或多个需要进行交集运算的集合键
# 示例
key1 = {a,b,c,d}
key2 = {c}
key3 = {a,c,e}
SINTER key1 key2 key3 = {c}
> SADD key1 "a"
(integer) 1
> SADD key1 "b"
(integer) 1
> SADD key1 "c"
(integer) 1
> SADD key2 "c"
(integer) 1
> SADD key2 "d"
(integer) 1
> SADD key2 "e"
(integer) 1
> SINTER key1 key2
1) "c"
# SINTERCARD
# 语法
SINTERCARD numkeys key [key ...] [LIMIT limit]
# 描述
返回结果的数量
# 参数
- key
一个或多个需要进行交集运算的集合键
- numkeys
后续键的数量
# 示例
> SADD key1 "a"
(integer) 1
> SADD key1 "b"
(integer) 1
> SADD key1 "c"
(integer) 1
> SADD key1 "d"
(integer) 1
> SADD key2 "c"
(integer) 1
> SADD key2 "d"
(integer) 1
> SADD key2 "e"
(integer) 1
> SINTER key1 key2
1) "c"
2) "d"
> SINTERCARD 2 key1 key2
(integer) 2
> SINTERCARD 2 key1 key2 LIMIT 1
(integer) 1
# SINTERSTORE
# 语法
SINTERSTORE destination key [key ...]
# 描述
计算交集并存储到新集合
# 参数
- destination
用于存储结果集的键
- key
一个或多个需要进行交集运算的集合键
# 示例
> SADD key1 "a"
(integer) 1
> SADD key1 "b"
(integer) 1
> SADD key1 "c"
(integer) 1
> SADD key2 "c"
(integer) 1
> SADD key2 "d"
(integer) 1
> SADD key2 "e"
(integer) 1
> SINTERSTORE key key1 key2
(integer) 1
> SMEMBERS key
1) "c"
# SISMEMBER
# 语法
SISMEMBER key member
# 描述
判断成员是否在集合中
# 参数
- key
存储该集合的键的名称
- member
需要检查是否存在的成员
# 示例
> SADD myset "one"
(integer) 1
> SISMEMBER myset "one"
(integer) 1
> SISMEMBER myset "two"
(integer) 0
# SMEMBERS
# 语法
SMEMBERS key
# 描述
获取集合中的所有成员
# 参数
- key
存储该集合的键的名称
# 示例
> SADD myset "Hello"
(integer) 1
> SADD myset "World"
(integer) 1
> SMEMBERS myset
1) "Hello"
2) "World"
> SADD myset "Hello"
(integer) 1
> SADD myset "World"
(integer) 1
> SMEMBERS myset
1) "Hello"
2) "World"
# SMISMEMBER
# 语法
SMISMEMBER key member [member ...]
# 描述
判断多个成员是否在集合中
# 参数
- key
存储该集合的键的名称
- member
需要检查是否存在的成员
# 示例
> SADD myset "one"
(integer) 1
> SADD myset "one"
(integer) 0
> SMISMEMBER myset "one" "notamember"
1) (integer) 1
2) (integer) 0
# SMOVE
# 语法
SMOVE source destination member
# 描述
将成员从一个集合移动到另一个集合
# 参数
- source
源集合的键
- member
需从源集合转移至目标集合的元素
- destination
用于存储结果集的键
# 示例
> SADD myset "one"
(integer) 1
> SADD myset "two"
(integer) 1
> SADD myotherset "three"
(integer) 1
> SMOVE myset myotherset "two"
(integer) 1
> SMEMBERS myset
1) "one"
> SMEMBERS myotherset
1) "three"
2) "two"
# SPOP
# 语法
SPOP key [count]
# 描述
移除并返回集合中的一个或多个随机成员
# 参数
- key
存储该集合的键的名称
# 示例
> SADD myset "one"
(integer) 1
> SADD myset "two"
(integer) 1
> SADD myset "three"
(integer) 1
> SPOP myset
"one"
> SMEMBERS myset
1) "two"
2) "three"
> SADD myset "four"
(integer) 1
> SADD myset "five"
(integer) 1
> SPOP myset 3
1) "three"
2) "four"
3) "five"
> SMEMBERS myset
1) "two"
# SRANDMEMBER
# 语法
SRANDMEMBER key [count]
# 描述
随机获取集合中的一个或多个成员
# 参数
- key
存储该集合的键的名称
# 示例
> SADD myset one two three
(integer) 3
> SRANDMEMBER myset
"two"
> SRANDMEMBER myset 2
1) "two"
2) "three"
> SRANDMEMBER myset -5
1) "three"
2) "one"
3) "three"
4) "one"
5) "three"
# SREM
# 语法
SREM key member [member ...]
# 描述
从集合中移除一个或多个成员
# 参数
- key
存储该集合的键的名称
- member
要添加到集合中的一个或多个成员
# 示例
> SREM
> SADD myset "one"
(integer) 1
> SADD myset "two"
(integer) 1
> SADD myset "three"
(integer) 1
> SREM myset "one"
(integer) 1
> SREM myset "four"
(integer) 0
> SMEMBERS myset
1) "two"
2) "three"
# SSCAN
# 语法
SSCAN key cursor [MATCH pattern] [COUNT count]
# 描述
增量遍历集合中的元素
# 参数
- key
存储该集合的键的名称
- cursor
游标的值。首次迭代时传入 0,之后将每次调用返回的游标值作为下一次调用的参数
# SUNION
# 语法
SUNION key [key ...]
# 描述
返回多个集合的并集
# 参数
- key
一个或多个要进行并集操作的集合键
# 示例
key1 = {a,b,c,d}
key2 = {c}
key3 = {a,c,e}
SUNION key1 key2 key3 = {a,b,c,d,e}
> SADD key1 "a"
(integer) 1
> SADD key1 "b"
(integer) 1
> SADD key1 "c"
(integer) 1
> SADD key2 "c"
(integer) 1
> SADD key2 "d"
(integer) 1
> SADD key2 "e"
(integer) 1
> SUNION key1 key2
1) "d"
2) "a"
3) "b"
4) "e"
5) "c"
# SUNIONSTORE
# 语法
SUNIONSTORE destination key [key ...]
# 描述
计算并集并存储到新集合
# 参数
- key
一个或多个要进行并集操作的集合键
- destination
用于存储结果集的键
# 示例
> SADD key1 "a"
(integer) 1
> SADD key1 "b"
(integer) 1
> SADD key1 "c"
(integer) 1
> SADD key2 "c"
(integer) 1
> SADD key2 "d"
(integer) 1
> SADD key2 "e"
(integer) 1
> SUNIONSTORE key key1 key2
(integer) 5
> SMEMBERS key
1) "a"
2) "b"
3) "c"
4) "d"
5) "e"