SINTER、SINTERSTORE:对集合执行交集计算
SINTER
命令可以计算出用户给定的所有集合的交集,然后返回这个交集包含的所有元素:
- SINTER set [set ...]
比如对于以下这两个集合来说:
- redis> SMEMBERS s1
- 1) "a"
- 2) "b"
- 3) "c"
- 4) "d"
- redis> SMEMBERS s2
- 1) "c"
- 2) "d"
- 3) "e"
- 4) "f"
我们可以通过执行以下命令,计算出这两个集合的交集:
- redis> SINTER s1 s2
- 1) "c"
- 2) "d"
从结果可以看出,s1
和 s2
的交集包含了 "c"
和 "d"
这两个元素。
SINTERSTORE 命令
除了 SINTER
命令之外,Redis 还提供了 SINTERSTORE
命令,这个命令可以把给定集合的交集计算结果储存到指定的键里面:
- SINTERSTORE destination_key set [set ...]
如果给定的键已经存在,那么 SINTERSTORE
命令在执行储存操作之前会先删除已有的键。SINTERSTORE
命令在执行完毕之后会返回被储存的交集元素数量作为返回值。
比如说,通过执行以下命令,我们可以把 s1
和 s2
的交集计算结果储存到集合 s1-inter-s2
里面:
- redis> SINTERSTORE s1-inter-s2 s1 s2
- (integer) 2 -- 交集包含两个元素
- redis> SMEMBERS s1-inter-s2
- 1) "c"
- 2) "d"
其他信息
属性 | 值 |
---|---|
复杂度 | SINTER 命令和 SINTERSTORE 命令的复杂度都是 O(N*M),其中 N 为给定集合的数量,而 M 则是所有给定集合当中,包含元素最少的那个集合的大小。 |
版本要求 | SINTER 命令和 SINTERSTORE 命令从 Redis 1.0.0 版本开始可用。 |