为什么此 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})
我正在阅读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})