DT_Stone 在 <Redis 高手心法> 读书笔记 | P9 -数据结构- HyperLogLog 中发帖
基数统计是指统计一个集合中不重复元素的数量. 这些不重复的元素称为基数
场景:
统计一个 APP 的日活,月活人数
统计一个页面每天被多少不同账户访问
统计用户每天搜索不同词条的个数
统计注册 IP 地址数
HyperLogLog
是一种概率数据结构, 每个 HyperLogLog 最多消耗 12 KB 内存,在标准误差 0.81%的前提下,可以计算 2^64 个元素的基数
特点:
高效存储
HyperLogLog 消耗的内存是固定的.与集合中元素个数无关
概率估计:
提供的结果是概率性的,不是精准计算的.通过 hash 函数将输入映射到 bitmap 中.并基于 bitmap 的统计信息来估计基数
高速计算:
可以再常量时间内计算估计的基数,无论集合的大小如何
稀疏矩阵和稠密矩阵
原理:
概率算法本质是伯努利过程 ,可以看做抛硬币过程.非正即反.
所以...