这里是用了求并集的命令来求差集,是一个比较好的统计手段。
ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]
这个 demo 是求了两个集合的并集:
sadd allusers donkey cat chipmonk trashpanda
zadd didusers 1 donkey 1 trashpanda
zunionstore didntdo 2 didusers allusers weights 1 0
zrangebyscore didntdo 0 0
1) "cat"
2) "chipmonk"
第三行的命令
ZUNIONSTORE destination numSets zset1 set2 weights weight1 weight2
参数:
- numkeys:参与求交集的集合的数量
- weight*:这里有两个 weight, 分别是求交集的时候每个元素的 score 的乘数因子,若是 set 没有score,便默认其 score 为 1;
这里的 weight2 = 0,于是并集中差集部分的 score 便是 0,只需列出 score 为 0 的 便是差集了:
zrangebyscore didntdo 0 0.
本文介绍了一种利用Redis的ZUNIONSTORE命令实现差集查询的方法。通过设置特定的权重,使得并集中的差集部分的score变为0,进而通过查询score为0的元素来获取差集。这一技巧不仅适用于简单的集合操作,也为更复杂的数据统计提供了灵活的解决方案。
381

被折叠的 条评论
为什么被折叠?



