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

时间:2020-07-25 23:51:57

标签: redis redis-py

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

在第二章中,他使用以下Python语句将ZSET的成员重新缩放到其原始分数的一半:

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

我的主要问题如下:

默认的汇总功能为SUM ,这样会不会最终将分数添加到我已有的分数中?

分数不是SCORE + 0.5 * SCORE吗?

为什么只覆盖值?

Github链接至代码here

谢谢。

1 个答案:

答案 0 :(得分:1)

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

也许您被第一个参数为viewed:的事实所吸引?那只是要保存到的目标键,它不参与相交。您可以看到Python参数如何映射到Redis参数here

从另一个方向来看,这就是代码在计算SCORE + 0.5 * SCORE时的实际外观:

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