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"