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 相关文章推荐
解决redis sentinel 频繁主备切换的问题
Apr 12 Redis
浅谈Redis在直播场景的实践方案
Apr 27 Redis
Redis主从配置和底层实现原理解析(实战记录)
Jun 30 Redis
Redis Stream类型的使用详解
Nov 11 Redis
linux下安装redis图文详细步骤
Dec 04 Redis
分布式Redis Cluster集群搭建与Redis基本用法
Feb 24 Redis
解决linux下redis数据库overcommit_memory问题
Feb 24 Redis
Redis之RedisTemplate配置方式(序列和反序列化)
Mar 13 Redis
使用Redis做预定库存缓存功能
Apr 02 Redis
Redis中key的过期删除策略和内存淘汰机制
Apr 12 Redis
redis protocol通信协议及使用详解
Jul 15 Redis
Redis主从复制操作和配置详情
Sep 23 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
PHP静态新闻列表自动生成代码
2007/06/14 PHP
PHP类的静态(static)方法和静态(static)变量使用介绍
2012/02/19 PHP
php调整gif动画图片尺寸示例代码分享
2013/12/05 PHP
php中JSON的使用方法
2015/04/30 PHP
微信支付开发订单查询实例
2016/07/12 PHP
javascript 命名空间以提高代码重用性
2008/11/13 Javascript
javascript中的关于类型转换的性能优化
2010/12/14 Javascript
JavaScript中window、doucment、body的解释
2013/08/14 Javascript
jQuery中的$.ajax()方法应用
2014/05/06 Javascript
点评js异步加载的4种方式
2015/12/22 Javascript
jQuery动画效果相关方法实例分析
2015/12/31 Javascript
jQuery中队列queue()函数的实例教程
2016/05/03 Javascript
zTree实现节点修改的实时刷新功能
2017/03/20 Javascript
vue组件间的参数传递实例详解
2019/04/26 Javascript
webpack HappyPack实战详解
2019/10/08 Javascript
JavaScript this关键字的深入详解
2021/01/14 Javascript
[41:52]2018DOTA2亚洲邀请赛3月29日小组赛B组Effect VS Secret
2018/03/30 DOTA
python使用urllib2提交http post请求的方法
2015/05/26 Python
Python模拟三级菜单效果
2017/09/11 Python
Python通过Django实现用户注册和邮箱验证功能代码
2017/12/11 Python
使用Django启动命令行及执行脚本的方法
2018/05/29 Python
python的xpath获取div标签内html内容,实现innerhtml功能的方法
2019/01/02 Python
python多线程分块读取文件
2019/08/29 Python
Tensorflow训练MNIST手写数字识别模型
2020/02/13 Python
Python栈的实现方法示例【列表、单链表】
2020/02/22 Python
python matplotlib包图像配色方案分享
2020/03/14 Python
HTML5的Geolocation地理位置定位API使用教程
2016/05/12 HTML / CSS
英国时尚家具、家居饰品及礼品商店:Graham & Green
2016/09/15 全球购物
美国护肤咨询及美容产品电商:Askderm
2017/02/24 全球购物
欧洲品牌瓷器餐具网上商店:Porzellantreff.de
2018/04/04 全球购物
Ruby如何定义一个类
2012/10/08 面试题
历史学专业毕业生求职信
2013/09/27 职场文书
饮料业务员岗位职责
2013/12/15 职场文书
餐厅执行经理岗位职责范本
2014/02/26 职场文书
个人授权委托书格式
2014/08/30 职场文书
Nginx优化服务之网页压缩的实现方法
2021/03/31 Servers