我正在阅读Josiah Carlson's Redis in Action book。
在第二章中,他使用以下Python语句将ZSET的成员重新缩放到其原始分数的一半:
conn.zinterstore('viewed:', {'viewed:': .5})
我的主要问题如下:
默认的汇总功能为SUM
,这样会不会最终将分数添加到我已有的分数中?
分数不是SCORE + 0.5 * SCORE
吗?
为什么只覆盖值?
Github链接至代码here。
谢谢。
答案 0 :(得分:1)
您将其视为viewed:
集与其自身的交集(两个集的交集)。实际上,由于第二个参数中只有一个元素,所以交集中只有一个元素。因此,该集合中的每个元素都在交点中,其得分的权重为0.5。
也许您被第一个参数为viewed:
的事实所吸引?那只是要保存到的目标键,它不参与相交。您可以看到Python参数如何映射到Redis参数here。
从另一个方向来看,这就是代码在计算SCORE + 0.5 * SCORE
时的实际外观:
conn.zinterstore('viewed:', {`viewed:': 1, 'viewed:': .5})