Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 什么时候应该避免Redis HyperLogLog,为什么?_Algorithm_Redis_Hyperloglog - Fatal编程技术网

Algorithm 什么时候应该避免Redis HyperLogLog,为什么?

Algorithm 什么时候应该避免Redis HyperLogLog,为什么?,algorithm,redis,hyperloglog,Algorithm,Redis,Hyperloglog,我对Redis HyperLogLog的工作原理和使用时间有一些基本想法。 在使用它之前,我做了一个测试:我给HLL条目添加了一些连续的数字(模拟用户ID),Redis很快给出了一个假阳性结果。确切地说,如果您将编号193添加到HLL条目中,则该条目中已存在编号202。您可以在redis cli中对其进行测试: 127.0.0.1:6379> del ns (integer) 0 127.0.0.1:6379> PFADD ns 193 (integer) 1 127.0.0.1:6

我对Redis HyperLogLog的工作原理和使用时间有一些基本想法。
在使用它之前,我做了一个测试:我给HLL条目添加了一些连续的数字(模拟用户ID),Redis很快给出了一个假阳性结果。确切地说,如果您将编号193添加到HLL条目中,则该条目中已存在编号202。您可以在redis cli中对其进行测试:

127.0.0.1:6379> del ns
(integer) 0
127.0.0.1:6379> PFADD ns 193
(integer) 1
127.0.0.1:6379> PFADD ns 202
(integer) 0
我知道HyperLogLog是一种概率数据结构,但HLL给出这样的误报不是太容易了吗?我误解了什么吗

  • 您误解了
    PFADD
    的答复-它并不表示存在,而是表示数据结构中的内部寄存器是否已更改
  • 您还误解了HLL的用途—它估计集合基数(大小),而不是集合成员资格
  • 对于设置成员资格的类似(概率意义上的)数据结构,请检查Bloom过滤器及其Redis实现Rebloom()

  • 您误解了
    PFADD
    的答复-它并不表示存在,而是表示数据结构中的内部寄存器是否已更改
  • 您还误解了HLL的用途—它估计集合基数(大小),而不是集合成员资格

  • 对于设置成员资格的类似(可能意义上的)数据结构,请检查Bloom筛选器及其Redis实现Rebloom()。

    Hello@Itamar,很抱歉回复太晚。但我还是很困惑。如果
    PFADD
    的回复表明内部发生了变化,并且HLL只是用来估计基数,那么我认为测试HLL的成员资格是很自然的:添加一个东西,HLL条目的基数就会发生变化——这个东西是存在的,否则它就不会存在。我说的对吗?你好@Itamar,很抱歉回复太晚。但我还是很困惑。如果
    PFADD
    的回复表明内部发生了变化,并且HLL只是用来估计基数,那么我认为测试HLL的成员资格是很自然的:添加一个东西,HLL条目的基数就会发生变化——这个东西是存在的,否则它就不会存在。我说得对吗?