Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Redis—神奇的HyperLoglog解决统计问题

Redis—神奇的HyperLoglog解决统计问题

作者头像
用户1263954
发布于 2022-04-07 13:52:20
发布于 2022-04-07 13:52:20
1.6K4
举报
文章被收录于专栏:IT技术精选文摘IT技术精选文摘

一、HyperLogLog 简介

HyperLogLog 是最早由 Flajolet 及其同事在 2007 年提出的一种 估算基数的近似最优算法。但跟原版论文不同的是,好像很多书包括 Redis 作者都把它称为一种 新的数据结构(new datastruct) (算法实现确实需要一种特定的数据结构来实现)

关于基数统计

基数统计(Cardinality Counting) 通常是用来统计一个集合中不重复的元素个数。

思考这样的一个场景: 如果你负责开发维护一个大型的网站,有一天老板找产品经理要网站上每个网页的 UV(独立访客,每个用户每天只记录一次),然后让你来开发这个统计模块,你会如何实现?

有一个神奇的网站,可以动态地让你观察到 HyperLogLog 的算法到底是怎么执行的:http://content.research.neustar.biz/blog/hll.html

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-03-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT技术精选文摘 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
4 条评论
热度
最新
专业专业!条理清晰易懂~这个标题编码方式也好有趣哈哈哈
专业专业!条理清晰易懂~这个标题编码方式也好有趣哈哈哈
回复回复点赞举报
简单易懂,又有一定实践内容与深度,深入浅出,赞
简单易懂,又有一定实践内容与深度,深入浅出,赞
回复回复点赞举报
感谢分享!可以讲下在Nginx或云上环境的最佳实践麻
感谢分享!可以讲下在Nginx或云上环境的最佳实践麻
回复回复点赞举报
坐沙发~ 生动有趣!小白看得津津有味?
坐沙发~ 生动有趣!小白看得津津有味?
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
Springboot集成RedisTemplate使用HyperLogLog实现UV统计
Redis是一个高性能的键值对数据库,它支持多种类型的数据结构,包括字符串、列表、集合、有序集合等。自Redis 2.8.9版本起,Redis引入了HyperLogLog这一数据结构,它主要用于基数估算,即估算一个集合中不同元素的数量。HyperLogLog以其极低的内存消耗和高效的估算能力,在大数据量的统计中发挥着重要作用。
知识浅谈
2025/05/16
820
Reids(4)——神奇的HyperLoglog解决统计问题
HyperLogLog 是最早由 Flajolet 及其同事在 2007 年提出的一种 估算基数的近似最优算法。但跟原版论文不同的是,好像很多书包括 Redis 作者都把它称为一种 新的数据结构(new datastruct) (算法实现确实需要一种特定的数据结构来实现)。
乔戈里
2020/03/13
6120
初识Redis的数据类型HyperLogLog
未来一段时间开发的项目或者需求会大量使用到Redis,趁着这段时间业务并不太繁忙,抽点时间预习和复习Redis的相关内容。刚好看到博客下面的UV和PV统计,想到了最近看书里面提到的HyperLogLog数据类型,于是花点时间分析一下它的使用方式和使用场景(暂时不探究HyperLogLog的实现原理)。Redis中HyperLogLog数据类型是Redid 2.8.9引入的,使用的时候确保Redis版本>= 2.8.9。
Throwable
2020/06/18
6980
初识Redis的数据类型HyperLogLog
【Redis基础】Redis新数据类型(Bitmaps,HyperLoglog,Geospatial)命令简介与案例演示
Bitmaps 并不是实际的数据类型,而是定义在String类型上的一个面向字节操作的集合。因为字符串是二进制安全的块,他们的最大长度是512M,最适合设置成2^32个不同字节。 bitmaps的位操作分成两类:1.固定时间的单个位操作,比如把String的某个位设置为1或者0,或者获取某个位上的值 2.对于一组位的操作,对给定的bit范围内,统计设定值为1的数目(比如人口统计)。 bitmaps最大的优势是在存储数据时可以极大的节省空间,比如在一个项目中采用自增长的id来标识用户,就可以仅用512M的内存来记录40亿用户的信息(比如用户是否希望收到新的通知,用1和0标识)
小尘要自信
2023/10/10
3100
技术总结|十分钟了解UV统计算法HyperLogLog
考虑到上述问题的扩展性,除了统计APP每日的独立用户登录数,还需要统计打开每个页面的独立用户数。
用户1904552
2025/02/27
1270
技术总结|十分钟了解UV统计算法HyperLogLog
Redis6发布订阅及Redis新数据类型
Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息
大忽悠爱学习
2021/11/15
5430
2023-06-13:统计高并发网站每个网页每天的 UV 数据,结合Redis你会如何实现?
2023-06-13:统计高并发网站每个网页每天的 UV 数据,结合Redis你会如何实现?
福大大架构师每日一题
2023/06/21
5010
2023-06-13:统计高并发网站每个网页每天的 UV 数据,结合Redis你会如何实现?
hyperloglog的java版使用
对于海量数据来说,数据内存占用会变得很高. Probabilistic数据结构牺牲了一下准确率去换取更低内存占用。比如一个HyperLogLog的数据结构只需要花费12KB内存,就可以计算接近2^64个不同元素的基数,而错误率在1.625%.
code4it
2018/09/17
1.5K0
redis hyperloglog实现原理
HyperLogLog 是一种基数估算算法。所谓基数估算,就是估算在一批数据中,不重复元素的个数有多少。最常见的场景就是统计uv。首先要说明,HyperLogLog实际上不会存储每个元素的值,它使用的是概率算法,通过存储元素的hash值的第一个1的位置,来计算元素数量。这样做存在误差,不适合绝对准确计数的场景。redis中实现的HyperLogLog,只需要12K内存,在标准误差0.81%的前提下,能够统计2的64次方个数据。
程序员小饭
2022/03/03
1.2K0
redis  hyperloglog实现原理
走近源码:神奇的HyperLogLog
HyperLogLog是Redis的高级数据结构,是统计基数的利器。前文我们已经介绍过HyperLogLog的基本用法,如果只求会用,只需要掌握HyperLogLog的三个命令即可,如果想要更进一步了解HyperLogLog的原理以及源码实现,相信这篇文章会给你带来一些启发。
Jackeyzhe
2020/03/11
9560
走近源码:神奇的HyperLogLog
⑧【HyperLoglog】Redis数据类型:HyperLoglog [使用手册]
pfmerge destkey sourcekey [sourcekey ...]
.29.
2023/11/26
1850
⑧【HyperLoglog】Redis数据类型:HyperLoglog [使用手册]
如何借助Redis更高效统计UV?——Hyperloglog篇
在今天的互联网时代,数据如潮水般汹涌而来。从用户行为数据、系统日志到实时交互数据,如何高效、准确地统计这海量数据中的唯一元素数量,成为了一个不小的挑战。
南山竹
2024/07/18
3810
如何借助Redis更高效统计UV?——Hyperloglog篇
Redis基础教程(十):HyperLogLog
在大数据处理中,精确计数唯一元素(如网站的独立访客数、用户行为分析中的唯一操作次数等)常常会面临存储和性能的双重挑战。传统的计数方法,如使用集合(Set)存储每个唯一元素,虽然能提供精确的结果,但在处理海量数据时会消耗大量的内存资源。这时,HyperLogLog 算法便展现出了其独特的优势。Redis 自版本 2.8.9 起,引入了 HyperLogLog 数据结构,为近似计数唯一元素提供了高效且节省内存的解决方案。本文将深入探讨 Redis HyperLogLog 的工作原理、使用方法及实战案例,帮助你理解并掌握这一强大的数据结构。
用户11147438
2024/07/12
2610
Redis系列(十八)独立功能之hyperloglog
Redis 提供了很多精巧的独立功能,本文介绍 HyperLogLog, 它可以称作唯一性统计的利器了。
呼延十
2020/12/23
2.5K0
Redis系列(十八)独立功能之hyperloglog
HyperLogLog统计网站UV 太丝滑
网站的UV(Unique Visitor)是指独立访客的数量,用于衡量网站的访问量和流量。在网站统计中,通常使用UV来度量网站的独立访客数量。
柯柏技术笔记
2024/01/26
2881
redis的HyperLogLog实战
作用域单个HyperLogLog时,复杂度为O(1),作用于多个HyperLogLog时,复杂度为O(N)
code4it
2018/09/17
1.3K0
如何用redis统计海量UV?
我们先思考一个常见的业务问题:如果你负责开发维护一个大型的网站,有一天老板找产品经理要网站每个网页每天的 UV 数据,然后让你来开发这个统计模块,你会如何实现?
程序员小饭
2021/08/13
1.3K0
学透 Redis HyperLogLog,看这篇就够了
在移动互联网的业务场景中,数据量很大,系统需要保存这样的信息:一个 key 关联了一个数据集合,同时对这个数据集合做统计做一个报表给运营人员看。
码哥字节
2023/09/26
2.5K1
学透 Redis HyperLogLog,看这篇就够了
Redis HyperLogLog:数据统计的轻量级解决方案
这次,阿七将介绍一种名为 HyperLogLog 的算法,它在 Redis 中的实现让大规模数据统计变得简单且高效。
伍六七AI编程
2023/12/19
3110
Redis HyperLogLog:数据统计的轻量级解决方案
Redis之HyperLogLog类型解读
HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的。
一个风轻云淡
2023/09/23
5600
推荐阅读
相关推荐
Springboot集成RedisTemplate使用HyperLogLog实现UV统计
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档