redis的HyperLogLog有什么用?

如果是单纯计算基数的话,使用HyperLogLog之前还得先一个一个PFADD,我在业务代码(php,java)中调用PFADD的时候换成用increment给一个string类型的专门用于统计基数的键来计算不就好了嘛?

所以说是我的用法不正确吗?HyperLogLog应该是在哪种场景下使用?如何正确科学的使用?

阅读 2.5k
2 个回答

维基百科上有写的啊:

approximating the number of distinct elements in a multiset. Calculating the exact cardinality of a multiset requires an amount of memory proportional to the cardinality, which is impractical for very large data sets. Probabilistic cardinality estimators, such as the HyperLogLog algorithm, use significantly less memory than this, at the cost of obtaining only an approximation of the cardinality.

简单来说就是用正确性换空间。如果你的数据量不大当然用不上。比如你的移动应用有多少个安装(使用 UUID 标识的)。

新手上路,请多包涵

比如你要统计一个链接一天内有多少个不相同的IP访问
这种情况下就适合用HyperLogLog了,自动去重,占用内存非常小

你如果用string类型的话,你怎么设计key?你怎么去重?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏