为什么此 ZINTERSTORE 命令不执行 SUM?

Why does this ZINTERSTORE command not perform a SUM?

我正在阅读Josiah Carlson's Redis in Action book

在第 2 章中,他使用 Python 中的以下语句将 ZSET 的成员重新调整为原始分数的一半:

conn.zinterstore('viewed:', {'viewed:': .5})

我的主要问题如下:

默认的聚合函数是SUM 所以这不会只是将分数加到我已有的分数上吗?

分数会不会是SCORE + 0.5 * SCORE

为什么只是覆盖值?

Github link 编码 here.

谢谢。

您将此视为 viewed: 集合与其自身的交集——两个集合的交集。事实上,由于第二个参数中只有一个元素,所以交集中只有一个集合。因此,该集合的每个元素都在交集中,其分数的权重为 0.5。

也许您对第一个参数是 viewed: 这一事实感到困惑?那只是要保存到的目标键,它不参与交集。您可以看到 Python 参数如何映射到 Redis 参数 here.

从另一个方向来看,这就是代码在计算 SCORE + 0.5 * SCORE:

时的实际样子
conn.zinterstore('viewed:', {`viewed:': 1, 'viewed:': .5})