开发者学堂课程【Redis 入门到精通(进阶篇):HyperLogLog】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/765/detail/13445
HyperLogLog
本章主要说明 HyperLogLog 的内容以及操作方法。
一,HyperLogLog 说明及操作
1.统计独立 UV
原始方案:set
存储每个用户的 id (字符串)
改进方案:Bitmaps
全新方案:HyperLogLog
2.基数
(1).基数是数据去重后元素的个数
(2).HyperLogLog 是用来做基数统计的,运用了 LogLog 算法
举例解释,现在就有一组数据,这组数据里边{1,3,5,7,5,7,8}。其中也稀有重复,那么整体这组数据一共是七个,但是他的基数是5,也就是说,它的基数对应的集合中,要把那些所有的数据重复的去掉,最终基数就是{1,3,5,7,8}。如果集合为{1,1,1,1,1,7,1}。基数即是{1,7},对应的基数较大。所谓的基数就是数据集合去重后的元素个数。
此图为讲解基数的详情图,可以作为举例参考:
3.3.LogLog 算法
关于 LogLog 算法可以简单了解以下,此下图为 LogLog 算法:
4.HyperLogLog 类型的基本操作
(1).添加数据
pfadd key element[element...]
(2).统计数据
pfcount key [key
(3).合并数据
pfmerge destkey sourcekey [sourcekey...]
5.相关说明
(1).用于进行基数统计,不是集合,不保存数据,只记录数量而不是具体数据
(2).核心是基数估算算法,最终数值存在一定误差
(3).误差范围:基数估计的结果是一个带有 0.81% 标准错误的近似值
(4).耗空间极小,每个 hyperloglogkey 占用了12K的内存用于标记基数
(5).pfadd 命令不是一次性分配 12K 内存使用,会随着基数的增加内存逐渐增大
(5).Pfmerge 命令合并后占用的存储空间为12K,无论合并之前数据量多少

