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分布式锁的这些坑
May 19 Redis
Redis 配置文件重要属性的具体使用
May 20 Redis
Windows中Redis安装配置流程并实现远程访问功能
Jun 07 Redis
Redis做数据持久化的解决方案及底层原理
Jul 15 Redis
关于SpringBoot 使用 Redis 分布式锁解决并发问题
Nov 17 Redis
解决linux下redis数据库overcommit_memory问题
Feb 24 Redis
分布式架构Redis中有哪些数据结构及底层实现原理
Mar 13 Redis
解决 Redis 秒杀超卖场景的高并发
Apr 12 Redis
Redis数据同步之redis shake的实现方法
Apr 21 Redis
解决 redis 无法远程连接
May 15 Redis
Redis Lua脚本实现ip限流示例
Jul 15 Redis
基于redis+lua进行限流的方法
Jul 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
利用phpexcel把excel导入数据库和数据库导出excel实现
2014/01/09 PHP
五款PHP代码重构工具推荐
2014/10/14 PHP
浅谈php处理后端&接口访问超时的解决方法
2016/10/29 PHP
php生成毫秒时间戳的实例讲解
2017/09/22 PHP
php生成二维码不保存服务器还有下载功能的实现代码
2018/08/09 PHP
PHP5中使用mysqli的prepare操作数据库的介绍
2019/03/18 PHP
键盘控制事件应用教程大全
2006/11/24 Javascript
jQuery中的常用事件总结
2009/12/27 Javascript
Jquery升级新版本后选择器的语法问题
2010/06/02 Javascript
js中点击空白区域时文本框与隐藏层的显示与影藏问题
2013/08/26 Javascript
判断日期是否能跨月查询的js代码
2014/07/25 Javascript
javascript 构造函数方式定义对象
2015/01/02 Javascript
jQuery定义背景动态切换效果的方法
2015/03/23 Javascript
ES6新特性之模块Module用法详解
2017/04/01 Javascript
Vue单文件组件基础模板小结
2017/08/10 Javascript
浅谈vuex 闲置状态重置方案
2018/01/04 Javascript
cropper js基于vue的图片裁剪上传功能的实现代码
2018/03/01 Javascript
nodejs express配置自签名https服务器的方法
2018/05/22 NodeJs
解决vue项目中页面调用数据 在数据加载完毕之前出现undefined问题
2019/11/14 Javascript
JavaScript实现简单的计算器
2020/01/16 Javascript
JavaScript隐式类型转换代码实例
2020/05/29 Javascript
学习python处理python编码问题
2011/03/13 Python
Python实现识别手写数字大纲
2018/01/29 Python
python实现银行管理系统
2019/10/25 Python
tensorflow之获取tensor的shape作为max_pool的ksize实例
2020/01/04 Python
Python 去除字符串中指定字符串
2020/03/05 Python
快速解决Django关闭Debug模式无法加载media图片与static静态文件
2020/04/07 Python
CSS3旋转——彩色扇子兼容firefox浏览器
2013/06/04 HTML / CSS
世界上最值得信赖的多日游在线市场:TourRadar
2018/07/20 全球购物
淘宝活动策划方案
2014/02/06 职场文书
产假请假条
2014/04/10 职场文书
工商行政管理专业求职书
2014/05/23 职场文书
教师四风问题整改措施
2014/09/25 职场文书
2015年公路路政个人工作总结
2015/07/24 职场文书
分享:关于学习的励志名言赏析
2019/08/16 职场文书
Mysql数据库命令大全
2021/05/26 MySQL