learn-tech/专栏/Redis核心原理与实战/13附录:更多集合操作命令.md
2024-10-16 06:37:41 +08:00

142 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

因收到Google相关通知网站将会择期关闭。相关通知内容
13 附录:更多集合操作命令
移除并返回集合中的一个随机元素
语法spop key [count] 示例:
127.0.0.1:6379> smembers myset
1) "v1"
2) "v2"
127.0.0.1:6379> spop myset 1
1) "v2"
127.0.0.1:6379> smembers myset
1) "v1"
随机返回集合中指定数量的元素列表
语法srandmember key [count] 示例:
127.0.0.1:6379> srandmember myset 2
1) "v4"
2) "v2"
返回一个集合或多个集合的交集
语法sinter key [key …] 示例:
127.0.0.1:6379> smembers myset
1) "v1"
2) "v3"
3) "v2"
127.0.0.1:6379> smembers myset2
1) "v1"
2) "v8"
127.0.0.1:6379> sinter myset myset2
1) "v1"
把集合的交集复制到新的集合中
语法sinterstore destination key [key …] 示例:
127.0.0.1:6379> smembers myset
1) "v1"
2) "v3"
3) "v2"
127.0.0.1:6379> smembers myset2
1) "v1"
2) "v8"
127.0.0.1:6379> sinterstore myset3 myset myset2
(integer) 1
127.0.0.1:6379> smembers myset3
1) "v1"
命令解析:从以上代码可以看出,我们把集合 myset 和 集合 myset2 的合集元素 v1 复制到了新的集合 myset3 中,但 v1 并不会从原有集合中移除。
查询一个或多个集合的并集
语法sunion key [key …] 示例:
127.0.0.1:6379> smembers group1
1) "java"
127.0.0.1:6379> smembers group2
1) "golang"
127.0.0.1:6379> sunion group1 group2
1) "java"
2) "golang"
把一个或多个集合的并集复制到新集合中
语法sunionstore destination key [key …] 示例:
127.0.0.1:6379> smembers group1
1) "java"
127.0.0.1:6379> smembers group2
1) "golang"
127.0.0.1:6379> sunionstore group3 group1 group2
(integer) 2
127.0.0.1:6379> smembers group3
1) "java"
2) "golang"
注意:只是把一个或多个集合的并集复制到新集合中,并不会在原集合中删除复制的元素。
查询一个或多个集合的错集
语法sdiff key [key …] 示例:
127.0.0.1:6379> smembers group1
1) "java"
2) "golang"
127.0.0.1:6379> smembers group2
1) "golang"
127.0.0.1:6379> sdiff group1 group2
1) "java"
注意:执行命令时集合的先后顺序会影响返回的结果,如下所示:
127.0.0.1:6379> sdiff group1 group2
1) "java"
127.0.0.1:6379> sdiff group2 group1
(empty list or set)
这是因为查询错集是以第一个集合为主的,当第二个元素包含第一个元素时,查询的错集结果就是空。
把一个或多个集合的错集复制到新集合
语法sdiffstore destination key [key …] 示例:
127.0.0.1:6379> smembers group1
1) "java"
2) "golang"
127.0.0.1:6379> smembers group2
1) "golang"
127.0.0.1:6379> sdiffstore group3 group1 group2
(integer) 1
127.0.0.1:6379> smembers group3
1) "java"