# 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"