根据Redis documentation on PFADD command:
Return value Integer reply, specifically: 1 if at least 1 HyperLogLog internal register was altered. 0 otherwise.
有人可以解释以下两点吗?
PFCOUNT(before) + output of PFADD
?换句话说,单线程客户端是否可以仅使用PFADD的输出来跟踪计数?答案 0 :(得分:2)
这是否意味着如果计数器真的增加了1,PFADD将返回“1”
没有
返回值纯粹是 boolean ,即它只表示是否为 基础HyperLogLog 已修改。
保证在运行
PFADD
后,新的PFCOUNT
将是PFCOUNT(before) + output of PFADD
吗?
不,因为PFADD
的输出不代表计数(见上文)。
话虽这么说,您可能希望使用PFADD
的输出作为触发来调用
再次PFCOUNT
,正如antirez中的original blog post所解释的那样:
这对用户来说很有趣,因为我们添加了元素 实际修改某些寄存器的元素的概率降低。 事实上,API能够提供有关 a 这一事实的提示 新基数可用允许持续添加的程序 元素和仅在新的时候检索近似基数 可用。
最后:
当PFADD返回“0”或“1”时,它们是否分别转换为“缓存命中”和“缓存未命中”?
没有。如上所述,它仅表示新基数可用。