为什么zinterstore命令不执行求和?

zqdjd7g9  于 2021-06-10  发布在  Redis
关注(0)|答案(1)|浏览(250)

我正在读乔西亚·卡尔森的《行动中的雷迪斯》。
在第2章中,他使用python中的以下语句将zset的成员重新缩放到其原始分数的一半:

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

我的主要问题如下:
默认聚合函数是 SUM 所以这不就是把分数加到我已经有的分数上吗?
分数不是很高吗 SCORE + 0.5 * SCORE ?
为什么它只是覆盖了值?
github链接到这里的代码。
谢谢。

voj3qocg

voj3qocg1#

你认为这是 viewed: 两个集合的交集。事实上,由于第二个参数中只有一个元素,所以交叉点中只有一个集合。因此,该集合的每个元素都在交叉点上,其得分的权重为0.5。
也许第一个论点是 viewed: ? 这只是要保存到的目标键,它不参与交叉点。您可以在这里看到python参数是如何Map到redis参数的。
从另一个方向来看,这就是代码在计算时的实际样子 SCORE + 0.5 * SCORE :

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

相关问题