项目在统计UV/PV时用到了Druid的Hyper hyperunique算法,书上介绍这种算法求出的UV/PV存在一定误差,因此需要了解下误差来自哪里. 实现去重功能,最简单的就是使用set记录集合本身,缺点与前面Bloom Filter差不多,显而易见,需要大量内存空间.HyperLogLog为解决这个问题而生. 另外redis也实现了HyperLogLog的结构,所以可以从redis源码上分析下其实现. 1.基数计数 基数是指一个集合中不同元素的个数.假设有一组数据{1, 2, 3, 3,…