Redis 系列教程 — Redis set 命令

set 集合的特性

1. 无序性 {1,2} == {2,1}
2. 确定性
3. 唯一性
    集合内的值是唯一不重复的

1. sadd KEY member [member1, member2 …]

向集合中添加元素,可以添加多个。返回已添加元素的个数

1
2
3
4
127.0.0.1:6379> sadd gender male female
(integer) 2
127.0.0.1:6379> sadd gender male
(integer) 0

如果添加已添加的元素则返回 0,表示未添加成功,体现了集合的唯一性。

2. smembers KEY

查看集合中的元素,无序显示。

1
2
3
127.0.0.1:6379> smembers gender
1) "female"
2) "male"

3. srem KEY member [member1, member2 …]

删除集合中的元素,可一次性删除多个元素。返回成功删除元素的个数。

1
2
127.0.0.1:6379> srem gender male man
(integer) 1

4. spop KEY [count]

返回并删除集合中 count 个随机元素,count 默认值是 1。体现了集合的无序性。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
127.0.0.1:6379> sadd gender a b c d e f
(integer) 6
127.0.0.1:6379> spop gender 3
1) "female"
2) "d"
3) "b"
127.0.0.1:6379> smembers gender
1) "c"
2) "a"
3) "e"
4) "f"
127.0.0.1:6379> spop gender 10
1) "c"
2) "a"
3) "e"
4) "f"
127.0.0.1:6379> smembers gender
(empty list or set)

如果 count 数超出集合中的所有元素,则返回并删除集合中的所有元素。

5. srandmember KEY [count]

同 spop 类似。只不过这个只是返回集合中的元素,但是并不删除集合中的元素。

6. sismember KEY member

判断集合中是否存在 member。存在则返回 1,否则返回 0,区分大小写。

1
2
3
4
5
6
127.0.0.1:6379> sadd language java python go
(integer) 3
127.0.0.1:6379> sismember language JAVA
(integer) 0
127.0.0.1:6379> sismember language go
(integer) 1

7. scard KEY

返回集合中所有元素的个数。

1
2
127.0.0.1:6379> scard language 
(integer) 3

8. smove source dest member

将 source 集合中的 member 元素移动到 dest 集合中。若 dest 不存在则自动创建。移动成功返回 1,否则返回 0。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
127.0.0.1:6379> sadd back java python go html
(integer) 4
127.0.0.1:6379> sadd web js css
(integer) 2
127.0.0.1:6379> smove back web html
(integer) 1
127.0.0.1:6379> smembers web
1) "js"
2) "html"
3) "css"
127.0.0.1:6379> smembers back
1) "go"
2) "python"
3) "java"

9. sinter KEY1 KEY2 …

求集合的交集,并返回。

1
2
3
4
5
6
7
8
127.0.0.1:6379> sinter web back
(empty list or set)
127.0.0.1:6379> sadd web nodejs
(integer) 1
127.0.0.1:6379> sadd back nodejs
(integer) 1
127.0.0.1:6379> sinter web back
1) "nodejs"

10. sunion KEY1 KEY2 …

求集合的并集,并返回。

1
2
3
4
5
6
7
8
127.0.0.1:6379> sunion web back
1) "nodejs"
2) "js"
3) "html"
4) "java"
5) "go"
6) "python"
7) "css"

11. sdiff KEY1 KEY2 …

求 KEY1 与 KEY2 以及 KEYN 的差集。

1
2
3
4
5
6
7
8
127.0.0.1:6379> sdiff web back
1) "js"
2) "css"
3) "html"
127.0.0.1:6379> sdiff back web
1) "java"
2) "go"
3) "python"

12. sinterstore/sunionstore/sdiffstore dest KEY1 KEY2 …

将集合 KEY1 与集合 KEY2 … KEYN 的交集/并集/差集 存储到 dest 集合中。

1
2
3
4
5
6
7
8
9
10
127.0.0.1:6379> sunionstore dev web back
(integer) 7
127.0.0.1:6379> smembers dev
1) "nodejs"
2) "js"
3) "html"
4) "java"
5) "go"
6) "python"
7) "css"

本文标题:Redis 系列教程 — Redis set 命令

文章作者:javaliu

发布时间:2018年12月21日 - 11:13

最后更新:2021年11月22日 - 20:45

原始链接:https://www.javaliu.com/2018/12/21/redis-set-07/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

坚持原创技术分享,您的支持将鼓励我的继续创作