我对Redis HyperLogLog如何工作以及何时使用它有一些基本的想法
在使用它之前,我做了一个测试:我pfadd
将一些连续的数字编辑到HLL条目(模仿用户ID),Redis很快给出了误报结果。确切地说,如果pfadd
编号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是否容易给出这样的误报?我误解了什么吗?
答案 0 :(得分:2)
PFADD
的回复 - 它并不表示存在,而是数据结构中的内部寄存器是否发生了变化。对于设置成员资格的类似(在概率意义上)数据结构,请检查布隆过滤器及其Redis实现,Rebloom(http://rebloom.io)。