redis学习笔记-----基本数据类型之集合

集合(Set)

与 list 类似,区别是 set 中的值是不重复的。

SADD

  • 将一个或多个member元素加入到集合key当中,已经存在于集合的member元素将被忽略。
  • 假如key不存在,则创建一个只包含member元素作成员的集合。
  • 当key不是集合类型时,返回一个错误。
1
2
> sadd k1 v1 v2 v3
(integer) > sadd k1 v1 v2 v3
(integer) 3

SMEMBERS

  • 返回集合key中的所有成员。
1
2
3
4
> smembers k1
1) "v2"
2) "v3"
3) > smembers k1
1) "v2"
2) "v3"
3) "v1"

SREM

  • 移除集合key中的一个或多个member元素,不存在的member元素会被忽略。
  • 当key不是集合类型,返回一个错误。
1
2
3
4
5
> srem k1 v2 v1
(integer) 2

> smembers k1
1) > srem k1 v2 v1
(integer) 2

> smembers k1
1) "v3"

SISMEMBER

  • 判断 member 元素是否是集合 key 的成员。
  • 返回 1,则 member 元素在集合中。返回 0,则不在集合中。
1
2
3
4
5
> sismember k1 v3
(integer) 1

> > sismember k1 v3
(integer) 1

> sismember k1 v2
(integer) 0

SCARD

  • 返回集合key的基数(集合中元素的数量)。
1
2
3
4
5
6
7
8
> scard k1
(integer) 1

> sadd k1 v4 v5
(integer) 2

> > scard k1
(integer) 1

> sadd k1 v4 v5
(integer) 2

> scard k1
(integer) 3

SMOVE

  • 将 member 元素从 source 集合移动到 destination 集合。
  • 如果 source 集合不存在或不包含指定的 member 元素,则命令不执行任何操作,仅返回0。
  • 当 destination 集合已经包含 member 元素时,则命令只是简单地将 source 集合中的 member 元素删除。
  • 当source或destination不是集合类型时,返回一个错误。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
> smembers k1
1) "v4"
2) "v5"
3) "v3"

> smembers k2
(empty list or set)

> smove k1 k2 v4
(integer) 1

> smembers k1
1) "v5"
2) "v3"

> smembers k2
1) > smembers k1
1) "v4"
2) "v5"
3) "v3"

> smembers k2
(empty list or set)

> smove k1 k2 v4
(integer) 1

> smembers k1
1) "v5"
2) "v3"

> smembers k2
1) "v4"

SPOP

  • 移除并返回集合中的一个随机元素。
  • 被移除的随机元素。
  • 当key不存在或key是空集时,返回nil。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
> smembers k1
1) "v5"
2) "v3"

> spop k1
"v3"

> smembers k1
1) "v5"

> spop k1
"v5"

> smembers k1
(empty list or set)

> spop > smembers k1
1) "v5"
2) "v3"

> spop k1
"v3"

> smembers k1
1) "v5"

> spop k1
"v5"

> smembers k1
(empty list or set)

> spop k1
(nil)

SRANDMEMBER

  • 返回集合中的一个随机元素。(不删除)
  • 返回值为被选中的随机元素。 当 key 不存在或 key 是空集时,返回nil。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
> sadd k1 v1 v2 v3
(integer) 3

> smembers k1
1) "v2"
2) "v3"
3) "v1"

> srandmember k1
"v3"

> smembers k1
1) "v2"
2) "v3"
3) > sadd k1 v1 v2 v3
(integer) 3

> smembers k1
1) "v2"
2) "v3"
3) "v1"

> srandmember k1
"v3"

> smembers k1
1) "v2"
2) "v3"
3) "v1"

SINTER

  • 返回给定的集合的交集。
  • 当给定集合当中有一个空集时,结果也为空集(根据集合运算定律)。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
> smembers k1
1) "v2"
2) "v3"
3) "v1"

> smembers k2
1) "v4"
2) "v1"
3) "v2"
4) "v5"
5) "v6"

> sinter k1 k2
1) "v2"
2) > smembers k1
1) "v2"
2) "v3"
3) "v1"

> smembers k2
1) "v4"
2) "v1"
3) "v2"
4) "v5"
5) "v6"

> sinter k1 k2
1) "v2"
2) "v1"

SINTERSTORE

  • 基本等同于 sinter 命令,但它将结果保存在一个新的集合里。
  • 如果要保存的集合已经存在,则将其覆盖。
  • 返回结果集合中成员的数量。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
> smembers k1
1) "v2"
2) "v3"
3) "v1"

> smembers k2
1) "v4"
2) "v1"
3) "v2"
4) "v5"
5) "v6"

> sinterstore k3 k1 k2
(integer) 2

> smembers k3
1) "v2"
2) > smembers k1
1) "v2"
2) "v3"
3) "v1"

> smembers k2
1) "v4"
2) "v1"
3) "v2"
4) "v5"
5) "v6"

> sinterstore k3 k1 k2
(integer) 2

> smembers k3
1) "v2"
2) "v1"

SUNION

  • 返回给定的所有集合的并集。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
> smembers k1
1) "v2"
2) "v3"
3) "v1"

> smembers k2
1) "v4"
2) "v1"
3) "v2"
4) "v5"
5) "v6"

> sunion k1 k2
1) "v4"
2) "v3"
3) "v1"
4) "v2"
5) "v5"
6) > smembers k1
1) "v2"
2) "v3"
3) "v1"

> smembers k2
1) "v4"
2) "v1"
3) "v2"
4) "v5"
5) "v6"

> sunion k1 k2
1) "v4"
2) "v3"
3) "v1"
4) "v2"
5) "v5"
6) "v6"

SUNIONSTORE

  • 基本等同于 sunion 命令,但它将结果保存在一个新的集合里。
  • 如果要保存的集合已经存在,则将其覆盖。
  • 返回结果集合中成员的数量。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
> smembers k1
1) "v2"
2) "v3"
3) "v1"

> smembers k2
1) "v4"
2) "v1"
3) "v2"
4) "v5"
5) "v6"

> sunionstore k4 k1 k2
(integer) 6

> smembers k4
1) "v4"
2) "v3"
3) "v1"
4) "v2"
5) "v5"
6) > smembers k1
1) "v2"
2) "v3"
3) "v1"

> smembers k2
1) "v4"
2) "v1"
3) "v2"
4) "v5"
5) "v6"

> sunionstore k4 k1 k2
(integer) 6

> smembers k4
1) "v4"
2) "v3"
3) "v1"
4) "v2"
5) "v5"
6) "v6"

SDIFF

  • 返回给定的所有集合的差集。
1
2
3
4
5
6
7
8
9
10
11
12
13
> smembers tom
1) "orange"
2) "banner"
3) "apple"

> smembers jack
1) "pants"
2) "t-shirt"
3) "apple"

> sdiff tom jack
1) "orange"
2) > smembers tom
1) "orange"
2) "banner"
3) "apple"

> smembers jack
1) "pants"
2) "t-shirt"
3) "apple"

> sdiff tom jack
1) "orange"
2) "banner"

SDIFFSTORE

  • 基本等同于 sdiff 命令,但它将结果保存在一个新的集合里。
  • 如果要保存的集合已经存在,则将其覆盖。
  • 返回结果集合中成员的数量。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
> smembers tom
1) "orange"
2) "banner"
3) "apple"

> smembers jack
1) "pants"
2) "t-shirt"
3) "apple"

> sdiffstore new tom jack
(integer) 2

> smembers new
1) "orange"
2) > smembers tom
1) "orange"
2) "banner"
3) "apple"

> smembers jack
1) "pants"
2) "t-shirt"
3) "apple"

> sdiffstore new tom jack
(integer) 2

> smembers new
1) "orange"
2) "banner"

redis学习笔记-----基本数据类型之集合
http://blog.xiangdangnian.net.cn/2019/12/10/redis学习笔记-基本数据类型之集合/
作者
chenggx
发布于
2019年12月10日
许可协议