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配置文件中常用配置详解
Apr 14 Redis
压缩Redis里的字符串大对象操作
Jun 23 Redis
k8s部署redis cluster集群的实现
Jun 24 Redis
redis使用不当导致应用卡死bug的过程解析
Jul 01 Redis
使用redis实现延迟通知功能(Redis过期键通知)
Sep 04 Redis
Redis模仿手机验证码发送的实现示例
Nov 02 Redis
Window server中安装Redis的超详细教程
Nov 17 Redis
解决 Redis 秒杀超卖场景的高并发
Apr 12 Redis
Redis官方可视化工具RedisInsight安装使用教程
Apr 19 Redis
Redis特殊数据类型Geospatial地理空间
Jun 01 Redis
Redis基本数据类型List常用操作命令
Jun 01 Redis
Redis基本数据类型String常用操作命令
Jun 01 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操作符与控制结构代码
2011/12/30 PHP
解决PHP使用CURL发送GET请求时传递参数的问题
2019/10/11 PHP
jquery ready()的几种实现方法小结
2010/06/18 Javascript
IE6-8中Date不支持toISOString的修复方法
2014/05/04 Javascript
Nodejs Post请求报socket hang up错误的解决办法
2014/09/25 NodeJs
浅谈javascript 归并方法
2015/01/21 Javascript
AngularJS控制器继承自另一控制器
2016/05/09 Javascript
实用jquery操作表单元素的简单代码
2016/07/04 Javascript
巧用数组制作图片切换js代码
2016/11/29 Javascript
微信小程序 动态绑定事件并实现事件修改样式
2017/04/13 Javascript
js评分组件使用详解
2017/06/06 Javascript
Node.js如何使用Diffie-Hellman密钥交换算法详解
2017/09/05 Javascript
vuejs点击class变化的实例
2018/09/05 Javascript
详解vue-cli+element-ui树形表格(多级表格折腾小计)
2019/04/17 Javascript
JavaScript实现美化滑块效果
2019/05/17 Javascript
小程序根据手机机型设置自定义底部导航距离
2019/06/04 Javascript
JavaScript canvas仿代码流瀑布
2020/02/10 Javascript
24个ES6方法解决JS实际开发问题(小结)
2020/05/31 Javascript
[05:59]2018DOTA2国际邀请赛寻真——只为胜利的Secret
2018/08/13 DOTA
由Python运算π的值深入Python中科学计算的实现
2015/04/17 Python
Python使用lxml模块和Requests模块抓取HTML页面的教程
2016/05/16 Python
python调用百度语音识别api
2018/08/30 Python
Python http接口自动化测试框架实现方法示例
2018/12/06 Python
基于python3 pyQt5 QtDesignner实现窗口化猜数字游戏功能
2019/07/15 Python
python提取照片坐标信息的实例代码
2019/08/14 Python
如何在VSCode上轻松舒适的配置Python的方法步骤
2019/10/28 Python
Python获取统计自己的qq群成员信息的方法
2019/11/15 Python
IDLE下Python文件编辑和运行操作
2020/04/25 Python
keras 获取某层的输入/输出 tensor 尺寸操作
2020/06/10 Python
python爬虫请求头的使用
2020/12/01 Python
俄罗斯品牌服装和鞋子的在线商店:KUPIVIP
2019/10/27 全球购物
法定代表人授权委托书范文
2014/08/02 职场文书
档案工作汇报材料
2014/08/21 职场文书
教师党员个人自我评价
2015/03/04 职场文书
《打电话》教学反思
2016/02/22 职场文书
QT连接MYSQL数据库的详细步骤
2021/07/07 MySQL