优秀的基数统计算法——HyperLogLog
为什么要使用 HyperLogLog?
在我们实际开发的过程中,可能会遇到这样一个问题,当我们需要统计一个大型网站的独立访问次数时,该用什么的类型来统计?
如果我们使用 Redis 中的集合来统计,当它每天有数千万级别的访问时,将会是一个巨大的问题。因为这些访问量不能被清空,我们运营人员可能会随时查看这些信息,那么随着时间的推移,这些统计数据所占用的空间会越来越大,逐渐超出我们能承载最大空间。
例如,我们用 IP 来作为独立访问的判断依据,那么我们就要把每个独立 IP 进行存储,以 IP4 来计算,IP4 最多需要 15 个字节来存储信息,例如:110.110.110.110。当有一千万个独立 IP 时,所占用的空间就是 15 bit*10000000 约定于 143MB,但这只是一个页面的统计信息,假如我们有 1 万个这样的页面,那我们就需要 1T 以上的空间来存储这些数据,而且随着 IP6 的普及,这个存储数字会越来越大,那我们就不能用集合的方式来存储了,这个时候我们需要开发新的数据类型 HyperLogLog 来做这件事了。
HyperLogLog 介绍
HyperLogLog(下文简称为 HLL)是 Redis 2.8.9 版本添加的数据结构,它用于高性能的基数(去重)统计功能,它的缺点就是存在极低的误差率。
HLL 具有以下几个特点:
- 能够使用极少的内存来统计巨量的数据,它只需要 12K 空间就能统计 2^64 的数据;
- 统计存在一定的误差,误差率整体较低,标准误差为 0.81%;
优秀的基数统计算法——HyperLogLog相关推荐
- 5redis-----------redis高级--GEO-查询附近的人、基数统计算法HLL 、布隆过滤器、缓存雪崩穿透击穿-------全栈式开发44
redis高级 一.GEO查询附近的人 二.基数统计算法-HyperLogLog 三.布隆过滤器 四.缓存雪崩&缓存穿透 (一)缓存雪崩 (二)缓存穿透 (三)缓存击穿 一.GEO查询附近的人 ...
- Redis修行 — 基数统计:HyperLogLog
学 无 止 境 ,与 君 共 勉 . 简介 HyperLogLog是Redis中的高级数据结构,它主要用于对海量数据(可以统计2^64个数据)做基数统计(去重统计数量).它的特点是速度快,占用空间小( ...
- Redis 基数统计:HyperLogLog 小内存大用处
https://blog.csdn.net/azhegps/article/details/71158952 我们一直都知道,redis几大常用数据结构,字符串.散列.列表.集合.有序集合.其实后来R ...
- Redis基数统计之HyperLogLog小内存大用处
转载:https://blog.csdn.net/azhegps/article/details/71158952 我们一直都知道,redis几大常用数据结构,字符串.散列.列表.集合.有序集合.其实 ...
- 基数统计算法狗年旺旺旺
2019独角兽企业重金招聘Python工程师标准>>> 有这样一种应用场景,在一个海量的数据集合中查看某元素是否存在,同时希望查询速度尽可能快,存储空间尽可能少,比如URL排重,比如 ...
- Redis(十):Redis特殊类型之Hyperloglog基数统计
redis 2.8.9版本就更新了Hyperloglog数据结构! Hyperloglog:基数统计算法!0.81%的错误率,不过统计大量数据可以忽略! 在 Redis 里面,每个 HyperLogL ...
- Redis三种特殊数据类型(Geospatial地理位置详解,Hyperloglog基数统计,Bitmap位图场景详解)
学习总结,转自[狂神说Java]Redis最新超详细版教程通俗易懂_哔哩哔哩_bilibili 1.Geospatial 地理位置 Geospatial : 使用场景 :朋友的定位,方圆几公里得人(附 ...
- 怎么往integer型数组添加数据_用户日活月活怎么统计 - Redis HyperLogLog 详解
HyperLogLog 是一种概率数据结构,用来估算数据的基数.数据集可以是网站访客的 IP 地址,E-mail 邮箱或者用户 ID. 基数就是指一个集合中不同值的数目,比如 a, b, c, d 的 ...
- 用户日活月活怎么统计 - Redis HyperLogLog 详解
点击上方"程序员历小冰",选择"置顶或者星标" 你的关注意义重大! HyperLogLog 是一种概率数据结构,用来估算数据的基数.数据集可以是网站访客的 IP ...
最新文章
- python 验证码识别示例(二) 复杂验证码识别
- 14 类编程题解法总结
- python出现套接字创建不成功_python套接字协议不支持 - python
- ps查看oracle进程数,通过ps -ef | grep oracle查出的进程,怎样对应数据库中跑的进程...
- 限界分支法(实际上没有剪枝,介绍的是广度优先搜索):01背包问题,队列实现方式(FIFO)
- Dubbo 跨语言调用神兽:dubbo-go-pixiu
- P4248 [AHOI2013]差异
- php 系统交互 删除文件_FileSystemMap:与文件系统交互的自然方法
- YMP框架学习笔记(二)------基于YMP框架搭建WEB应用程序
- 关于用jQuery实现的checkbox全选和反选功能
- 《天天数学》连载21:一月二十一日
- JavaScript 数字前补“0”的五种方法
- 在线markdown文件转pdf
- 锤子pro2 Android8,锤子 坚果Pro2 MIUI10 Android N 快如闪电 指纹支付 完美ROOT
- 基于 HTML5 + WebGL 的 3D 太阳系系统
- 设计师Adobe国际认证证书有用吗?
- 【算法竞赛学习笔记】KD-Tree
- 此证书已在此前安装为一个证书权威机构
- PHP集群中SESSION共享方案之Redis
- IPv6网络的可操作安全考虑——RFC9099解析(一)