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 相关文章推荐
Redis6.0搭建集群Redis-cluster的方法
May 08 Redis
为Java项目添加Redis缓存的方法
May 18 Redis
Redis缓存-序列化对象存储乱码问题的解决
Jun 21 Redis
了解Redis常见应用场景
Jun 23 Redis
Redis集群节点通信过程/原理流程分析
Mar 18 Redis
Redis高可用集群redis-cluster详解
Mar 20 Redis
Redis如何使用乐观锁(CAS)保证数据一致性
Mar 25 Redis
浅谈Redis 中的过期删除策略和内存淘汰机制
Apr 03 Redis
解决 redis 无法远程连接
May 15 Redis
Redis基本数据类型Zset有序集合常用操作
Jun 01 Redis
Redis批量生成数据的实现
Jun 05 Redis
Redis+AOP+自定义注解实现限流
Jun 28 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在window iis的莫名问题的测试方法
2013/05/14 PHP
解析link_mysql的php版
2013/06/30 PHP
PHP goto语句用法实例
2019/08/06 PHP
laravel 解决路由除了根目录其他都404的问题
2019/10/18 PHP
json 定义
2008/06/10 Javascript
Jquery ui css framework
2010/06/28 Javascript
formValidator3.3的ajaxValidator一些异常分析
2011/07/12 Javascript
jQuery获取注册信息并提示实现代码
2013/04/21 Javascript
javaScript对文字按照拼音排序实现代码
2013/12/27 Javascript
Js与下拉列表处理问题解决
2014/02/13 Javascript
javascript页面上使用动态时间具体实现
2014/03/18 Javascript
JavaScript中exec函数用法实例分析
2015/06/08 Javascript
原生JS实现轮播效果+学前端的感受(防止走火入魔)
2016/08/21 Javascript
微信小程序开发实战教程之手势解锁
2016/11/18 Javascript
NPM 安装cordova时警告:npm WARN deprecated minimatch@2.0.10: Please update to minimatch 3.0.2 or higher to
2016/12/20 Javascript
ES6解构赋值的功能与用途实例分析
2017/10/31 Javascript
Nodejs 发布自己的npm包并制作成命令行工具的实例讲解
2018/05/15 NodeJs
vue点击页面空白处实现保存功能
2019/11/06 Javascript
linux系统使用python监测网络接口获取网络的输入输出
2014/01/15 Python
Zabbix实现微信报警功能
2016/10/09 Python
Pycharm以root权限运行脚本的方法
2019/01/19 Python
PyQt5固定窗口大小的方法
2019/06/18 Python
python中pytest收集用例规则与运行指定用例详解
2019/06/27 Python
python实现猜拳小游戏
2020/04/05 Python
基于Python pyecharts实现多种图例代码解析
2020/08/10 Python
AmazeUI底部导航栏与分享按钮的示例代码
2020/08/18 HTML / CSS
国际领先的学术出版商:Springer
2017/01/11 全球购物
英国顶级水晶珠宝零售商之一:Tresor Paris
2019/04/27 全球购物
护理学中专毕业生求职信
2013/11/11 职场文书
高中运动会广播稿
2014/01/21 职场文书
史学专业毕业生求职信
2014/05/09 职场文书
员工薪酬激励方案
2014/06/13 职场文书
2014预防青少年违法犯罪工作总结
2014/12/10 职场文书
离婚代理词范文
2015/05/23 职场文书
关于法制教育的宣传语
2015/07/13 职场文书
PyTorch中的torch.cat简单介绍
2022/03/17 Python