Algorithm 什么时候应该避免Redis HyperLogLog,为什么?
我对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
在使用它之前,我做了一个测试:我给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
的答复-它并不表示存在,而是表示数据结构中的内部寄存器是否已更改PFADD
的答复-它并不表示存在,而是表示数据结构中的内部寄存器是否已更改对于设置成员资格的类似(可能意义上的)数据结构,请检查Bloom筛选器及其Redis实现Rebloom()。Hello@Itamar,很抱歉回复太晚。但我还是很困惑。如果
PFADD
的回复表明内部发生了变化,并且HLL只是用来估计基数,那么我认为测试HLL的成员资格是很自然的:添加一个东西,HLL条目的基数就会发生变化——这个东西是存在的,否则它就不会存在。我说的对吗?你好@Itamar,很抱歉回复太晚。但我还是很困惑。如果PFADD
的回复表明内部发生了变化,并且HLL只是用来估计基数,那么我认为测试HLL的成员资格是很自然的:添加一个东西,HLL条目的基数就会发生变化——这个东西是存在的,否则它就不会存在。我说得对吗?