Redis中PFADD的返回值

时间:2014-06-24 16:27:06

标签: redis hyperloglog

根据Redis documentation on PFADD command

 Return value
 Integer reply, specifically:
 1 if at least 1 HyperLogLog internal register was altered. 0 otherwise.

有人可以解释以下两点吗?

  1. 这是否意味着PFADD将返回" 1"如果计数器真的增加了1?是否保证在运行PFADD后,新的PFCOUNT将为PFCOUNT(before) + output of PFADD?换句话说,单线程客户端是否可以仅使用PFADD的输出来跟踪计数?
  2. 当PFADD返回" 0"或" 1",他们是否转换为"缓存命中"和#"缓存未命中"分别?

1 个答案:

答案 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”时,它们是否分别转换为“缓存命中”和“缓存未命中”?

没有。如上所述,它仅表示新基数可用