Redis Hyperloglog限制

时间:2016-04-05 16:02:13

标签: redis cardinality hyperloglog

我正在尝试使用Redis Hyperloglog以hacky方式解决问题,但我想要了解的是Hyperloglog对数据或分发的限制和假设。

count-min和bloom过滤器有其自身的一些限制,但谷歌并没有提供有关Hyperloglog的应用程序和限制的大量信息。

我正在使用Redis Hyperloglog,而Antirez描述there are no practical limits to the cardinality of the sets we can count.但是从理论的角度来看,Hyperloglog是否对数据或分布做出任何假设/约束?

1 个答案:

答案 0 :(得分:0)

HyperLogLog算法假定使用强通用散列函数。 Redis使用的MurmurHash64A从实用的角度来看应该足够好。 Redis HyperLogLog实现每个寄存器使用6位,允许表示64位散列值内的任何位运行长度。因此,我看到的唯一限制是64位哈希值本身。如果基数大约为2 ^ 64,则会有许多哈希冲突最终会导致大的估计错误。但是,这种数量级的基数在实践中从未发生过。