DT_Stone<Redis 高手心法> 读书笔记 | P9 -数据结构- HyperLogLog 中发帖

基数统计是指统计一个集合中不重复元素的数量. 这些不重复的元素称为基数 
场景:

统计一个 APP 的日活,月活人数
统计一个页面每天被多少不同账户访问
统计用户每天搜索不同词条的个数
统计注册 IP 地址数

HyperLogLog
是一种概率数据结构, 每个 HyperLogLog 最多消耗 12 KB 内存,在标准误差 0.81%的前提下,可以计算 2^64 个元素的基数
特点:

高效存储

HyperLogLog 消耗的内存是固定的.与集合中元素个数无关


概率估计:

提供的结果是概率性的,不是精准计算的.通过 hash 函数将输入映射到 bitmap 中.并基于 bitmap 的统计信息来估计基数


高速计算:

可以再常量时间内计算估计的基数,无论集合的大小如何



稀疏矩阵和稠密矩阵
原理:
概率算法本质是伯努利过程 ,可以看做抛硬币过程.非正即反.
所以...