Redis特殊数据类型HyperLogLog基数统计算法讲解


Posted in Redis onJune 01, 2022

Redis HyperLogLog基数统计

HyperLogLog 是用来做基数统计的算法。

先了解下什么是基数。

比如数据集{1, 3, 5, 7, 5, 7, 8},那么这个数据集的基数集为{1, 3, 5 ,7, 8},基数(不重复元素)为5。

如果,现在需要统计一下网页的UV,那么就会涉及到去重了,这种场景就很适合用HyperLogLog。

这不就是set集合嘛?我用set来得出不重复的元素也可以呀。

没错,是可以,但是当数据量非常大的时候,你这个set是不是会占用非常大的内存呢?
如果用HyperLogLog来处理就好了,因为它计算基数所需要的空间是一定的,只要12kb,就可以计算接近 2^64 个不同元素的基数。

但是注意在这个数量级下,是会存在0.81%的错误率的,所以说具体还得看业务是否可以接受这样的错误率。
像上面说的统计UV的场景,这点错误率是可以忽略的。

一、pfadd

将所有元素参数添加到 HyperLogLog 数据结构中。

pfadd mypf 1 2 3 a b c 3 4 5 c d a

Redis特殊数据类型HyperLogLog基数统计算法讲解

二、pfcount

返回给定 HyperLogLog 的基数估算值。

pfcount mypf

可以看到,返回的是9,也就是不重复的元素数量有9个。

Redis特殊数据类型HyperLogLog基数统计算法讲解

三、pfmerge

将多个 HyperLogLog 合并为一个 HyperLogLog ,合并后的 HyperLogLog 的基数估算值是通过对所有 给定 HyperLogLog 进行并集计算得出的。

pfmerge mypftotal mypf3 mypf4

mypf3、mypf4合并到mypftotal 上。

Redis特殊数据类型HyperLogLog基数统计算法讲解

以上就是Redis特殊数据类型HyperLogLog基数统计算法讲解的详细内容,更多关于Redis HyperLogLog基数统计的资料请关注三水点靠木其它相关文章!


Tags in this post...

Redis 相关文章推荐
在K8s上部署Redis集群的方法步骤
Apr 27 Redis
基于Redis过期事件实现订单超时取消
May 08 Redis
基于Redis位图实现用户签到功能
May 08 Redis
深入浅析Redis 集群伸缩原理
May 15 Redis
Redis Cluster集群动态扩容的实现
Jul 15 Redis
Redis高并发防止秒杀超卖实战源码解决方案
Nov 01 Redis
Redis 持久化 RDB 与 AOF的执行过程
Nov 07 Redis
redis数据一致性的实现示例
Mar 18 Redis
Redis 哨兵机制及配置实现
Mar 25 Redis
redis sentinel监控高可用集群实现的配置步骤
Apr 01 Redis
Redis特殊数据类型bitmap位图
Jun 01 Redis
浅谈Redis变慢的原因及排查方法
Jun 21 Redis
Redis特殊数据类型bitmap位图
Jun 01 #Redis
浅谈Redis的事件驱动模型
May 30 #Redis
Redis 异步机制
Redis 报错 error:NOAUTH Authentication required
解决 redis 无法远程连接
Redis 限流器
May 15 #Redis
Redis高并发缓存架构性能优化
You might like
UTF8编码内的繁简转换的PHP类
2009/07/09 PHP
PHP swfupload图片上传的实例代码
2013/09/30 PHP
PHP独立Session数据库存储操作类分享
2014/06/11 PHP
PHP版本常用的排序算法汇总
2015/12/20 PHP
php 自定义错误日志实例详解
2016/11/12 PHP
点击显示指定元素隐藏其他同辈元素的方法
2014/02/19 Javascript
jQuery网页选项卡插件rTabs用法实例分析
2015/08/26 Javascript
在Vue项目中使用d3.js的实例代码
2018/05/01 Javascript
使用vuepress搭建静态博客的示例代码
2019/02/14 Javascript
JavaScript数组、json对象、eval()函数用法实例分析
2019/02/21 Javascript
详解如何更好的使用module vuex
2019/03/27 Javascript
js canvas实现俄罗斯方块
2020/10/11 Javascript
python代码制作configure文件示例
2014/07/28 Python
python中对list去重的多种方法
2014/09/18 Python
python3+PyQt5泛型委托详解
2018/04/24 Python
Django添加favicon.ico图标的示例代码
2018/08/07 Python
Python 实现数据结构-循环队列的操作方法
2019/07/17 Python
Python3 chardet模块查看编码格式的例子
2019/08/14 Python
python 实现二维列表转置
2019/12/02 Python
pymongo insert_many 批量插入的实例
2020/12/05 Python
python 实现图片裁剪小工具
2021/02/02 Python
一款纯css3实现的竖形二级导航的实例教程
2014/12/11 HTML / CSS
HTML5新特性 多线程(Worker SharedWorker)
2017/04/24 HTML / CSS
美国最大的团购网站:Groupon
2016/07/23 全球购物
UGG美国官网:购买UGG雪地靴、拖鞋和鞋子
2017/12/31 全球购物
美国最大的旗帜经销商:Carrot-Top
2018/02/26 全球购物
理肤泉英国官网:La Roche-Posay英国
2019/01/14 全球购物
美国轻奢时尚购物网站:REVOLVE(支持中文)
2020/07/18 全球购物
本科毕业自我鉴定
2014/03/20 职场文书
投资协议书范本
2014/04/21 职场文书
大学生个人求职信
2014/06/02 职场文书
药店促销活动策划方案
2014/08/24 职场文书
投标承诺函范文
2015/01/21 职场文书
公司地址变更通知
2015/04/25 职场文书
2016入党积极分子党课学习心得体会
2015/10/09 职场文书
Python OpenCV实现传统图片格式与base64转换
2021/06/13 Python