Redis基础教程(十):HyperLogLog

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快!
💝💝💝如有需要请大家订阅我的专栏【Redis系列】哟!我会定期更新相关系列的文章
💝💝💝关注!关注!!请关注!!!请大家关注下博主,您的支持是我不断创作的最大动力!!!

文章目录

    • 引言
    • 一、HyperLogLog 工作原理
    • 二、Redis HyperLogLog 命令
    • 三、实战案例
      • 场景:网站独立访客计数
        • 步骤1:初始化 HyperLogLog
        • 步骤2:添加访客到 HyperLogLog
        • 步骤3:获取独立访客数的近似计数
      • 场景:多源数据的合并计数
        • 步骤1:初始化 HyperLogLog 并添加数据
        • 步骤2:合并多个 HyperLogLog
        • 步骤3:获取合并后的唯一元素计数
    • 四、总结

引言

在大数据处理中,精确计数唯一元素(如网站的独立访客数、用户行为分析中的唯一操作次数等)常常会面临存储和性能的双重挑战。传统的计数方法,如使用集合(Set)存储每个唯一元素,虽然能提供精确的结果,但在处理海量数据时会消耗大量的内存资源。这时,HyperLogLog 算法便展现出了其独特的优势。Redis 自版本 2.8.9 起,引入了 HyperLogLog 数据结构,为近似计数唯一元素提供了高效且节省内存的解决方案。本文将深入探讨 Redis HyperLogLog 的工作原理、使用方法及实战案例,帮助你理解并掌握这一强大的数据结构。

一、HyperLogLog 工作原理

HyperLogLog 是一种概率数据结构,它通过统计学方法对数据进行采样和估算,以极低的内存消耗实现对大规模数据集中唯一元素的近似计数。HyperLogLog 的核心思想是利用哈希函数的特性,对输入数据进行哈希转换后,观察哈希值中连续零的最长序列长度,以此来估计数据集中不同元素的数量。具体而言,HyperLogLog 分配了一系列的寄存器,每个寄存器存储着观察到的最长零序列的长度。通过不断更新这些寄存器,最终可以基于这些值的平均数来估算数据集的基数。

二、Redis HyperLogLog 命令

Redis 提供了以下命令来操作 HyperLogLog 数据结构:

  1. PFADD key element [element …]

    • 描述:将一个或多个元素添加到 HyperLogLog 中,用于估算基数。
    • 示例:PFADD myHyperLogLog user1 user2 user3
  2. PFCOUNT key [key …]

    • 描述:返回一个或多个 HyperLogLog 的估算基数。
    • 示例:PFCOUNT myHyperLogLog
  3. PFMERGE destkey sourcekey [sourcekey …]

    • 描述:将一个或多个 HyperLogLog 合并到另一个 HyperLogLog 中,用于合并不同数据集的基数估算。
    • 示例:PFMERGE total myHyperLogLog1 myHyperLogLog2

三、实战案例

场景:网站独立访客计数

假设我们正在运营一个大型网站,需要统计每天的独立访客数。由于访问量巨大,直接使用集合存储每个访客的唯一标识符会消耗过多的内存。这时,HyperLogLog 成为了理想的选择。

步骤1:初始化 HyperLogLog
redis-cli DEL unique_visitors
步骤2:添加访客到 HyperLogLog
redis-cli PFADD unique_visitors visitor1
redis-cli PFADD unique_visitors visitor2
redis-cli PFADD unique_visitors visitor3
步骤3:获取独立访客数的近似计数
redis-cli PFCOUNT unique_visitors

场景:多源数据的合并计数

假设我们有多个来源的数据,需要汇总统计其中的唯一元素数量。例如,我们可能有来自不同服务器的日志数据,每份日志记录了用户的行为,现在需要统计总的唯一用户行为数。

步骤1:初始化 HyperLogLog 并添加数据
redis-cli PFADD log1 user1 action1
redis-cli PFADD log1 user2 action2
redis-cli PFADD log2 user2 action3
redis-cli PFADD log2 user3 action4
步骤2:合并多个 HyperLogLog
redis-cli PFMERGE total_log log1 log2
步骤3:获取合并后的唯一元素计数
redis-cli PFCOUNT total_log

四、总结

Redis HyperLogLog 提供了一种高效且节省内存的方式来估算大规模数据集中的唯一元素数量。在处理海量数据时,HyperLogLog 不仅能大幅减少内存消耗,还能保持较高的计数精度,是大数据分析和实时统计领域的有力工具。掌握 HyperLogLog 的使用,将帮助你在数据处理和分析中更加游刃有余,提升系统的性能和可扩展性。


喜欢博主的同学,请给博主一丢丢打赏吧↓↓↓您的支持是我不断创作的最大动力哟!感谢您的支持哦😘😘😘
打赏下吧

💝💝💝如有需要请大家订阅我的专栏【Redis系列】哟!我会定期更新相关系列的文章
💝💝💝关注!关注!!请关注!!!请大家关注下博主,您的支持是我不断创作的最大动力!!!

Redis相关文章索引文章链接
Redis基础教程(一):redis配置Redis基础教程(一):redis配置
Redis基础教程(二):redis数据类型Redis基础教程(二):redis数据类型
Redis基础教程(三):redis命令Redis基础教程(三):redis命令
Redis基础教程(四):redis键(key)Redis基础教程(四):redis键(key)
Redis基础教程(五):string字符串Redis基础教程(五):string字符串
Redis基础教程(六):redis 哈希(Hash)Redis基础教程(六):redis 哈希(Hash)
Redis基础教程(七):redis列表(List)Redis基础教程(七):redis列表(List)
Redis基础教程(八):redis集合(Set)Redis基础教程(八):redis集合(Set)
Redis基础教程(九):redis有序集合Redis基础教程(九):redis有序集合

❤️❤️❤️觉得有用的话点个赞 👍🏻 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄
💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/38708.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux爱好者能对Linux痴迷到什么程度?

在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「Linux的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!!曾经想帮助全世界的人卸载掉…

归并排序——有序序列的合并

目录 1、简述 2、复杂度 3、稳定性 4、例子 1、简述 有序序列的合并(Merge of Sorted Sequences)是归并排序的核心步骤之一。其目的是将两个已经排序的序列合并成一个新的有序序列。这个过程在归并排序中非常重要,因为归并排序通过递归地…

技术职务管理助力智慧校园建设:深入解读人事系统

智慧校园人事系统中的技术职务管理模块,专注于高校及教育机构内技术人员及科研人员的职务管理,涵盖职称评审、技术职务任命、项目参与记录、科研成果跟踪及技术能力评估等多个方面,旨在通过信息化手段提升技术人才管理的效率与科学性。 在这一…

Windows如何安装并启动Nginx

0、前言 Nginx 是一款高性能、轻量级的Web服务器和反向代理服务器,广泛应用于互联网领域。它以其高效稳定、内存占用少和丰富的模块化设计而受到开发者们的青睐。 在实际使用过程中,我们多数时候会在Linux系统上运行Nginx,但实际上&#xff…

单目行车测距摄像系统(单目测距-行车)

单目行车测距摄像系统是一种利用单个摄像头实现车辆行驶中前方障碍物距离测量的技术。该系统通过计算机视觉算法,能够实时分析摄像头捕捉的图像,精确计算出车辆与前方物体之间的距离,对于自动驾驶、高级驾驶辅助系统(ADAS&#xf…

PMP考试没通过别担心,补救办法来了

2024年6月PMP考试成绩正在陆续分批次发布。没有考试通过的同学就会疑问,考试没考过怎么办?可不可以补考?面对PMP考试没通过的情况,我们应该如何应对呢? 首先要告诉大家一个好消息!6月考试不通过的考生可以…

24年hvv不要掉进秘网了,特别别被反制了

这两年的hvv,防守方已经不单单是每天坐那看监控、封ip了,越来越多的大佬投身防守工作中,让防守从被动变成了一个主动的活了。 目前最常见的主动防守有2种,1、长时间的蜜罐运营。2、蜜罐反制。 01-蜜罐运营 蜜罐这个词干安全的都…

七、函数练习

目录 1. 写一个函数可以判断一个数是不是素数。(素数只能被1或其本身整除的数) 2. 一个函数判断一年是不是闰年。 3.写一个函数,实现一个整形有序数组的二分查找。 4. 写一个函数,每调用一次这个函数,使得num每次增…

基于PHP花涧订购系统的设计与实现00332

摘 要 近年来,电子商务的快速发展引起了行业和学术界的高度关注。花涧订购系统旨在为用户提供一个简单、高效、便捷的花卉购物体验,它不仅要求用户清晰地查看所需信息,而且还要求界面设计精美,使得功能与页面完美融合,…

PIL,OpenCV,Pytorch处理图像时的通道顺序(颜色,长宽深)

项目颜色通道顺序长宽通道顺序数据类型取值范围PILRGBHWCndarray0-255 (byte)OpenCVBGRHWCndarray0-255 (byte)PyTorchRGB/BGR (取决于如何读取)(N)CHWtensor0-1 (float, 标准化后); 0-255 (int, 未标准化) 注意以下几点: 颜色通道顺序:PIL默认使用RGB顺…

图像增强方法汇总OpenCV+python实现【第二部分:高级图像增强方法】

图像增强方法汇总OpenCV+python实现【第二部分:高级图像增强方法】 前言高级图像增强方法1. 随机高斯模糊(Random Gaussian Blur)2. 随机灰度(Random Grayscale)3. 随机通道交换(Random Channel Swap)4. 随机伽马校正(Random Gamma Correction)5. 随机透视变换(Rando…

监控易在某市电子政务外网的运维应用案例

随着信息技术的飞速发展,电子政务已经成为政府提升服务效率、增强公众满意度的重要途径。某市电子政务外网作为该市政府部门与外界交互的主要平台,承载着大量关键业务与数据交互,其网络环境的复杂性、应用特点的多样性以及运维需求的挑战性&a…

AI程序员还是代替不了程序员,震撼硅谷的Devin-ai程序员,再度震撼硅谷——但这次是被打假

文章目录 主要疑点包括但不限于:35年从业者逐帧验证 AI程序员还是代替不了程序员,震撼硅谷的Devin-ai程序员,再度震撼硅谷——但这次是被打假 一位油管程序员博主Internet of Bugs对Devin发布的视频进行了逐帧分析,逐一举证说明了…

【C语言】register 关键字

在C语言中,register关键字用于提示编译器将变量尽量存储在CPU的寄存器中,而不是在内存中。这是为了提高访问速度,因为寄存器的访问速度比内存快得多。使用register关键字的变量通常是频繁使用的局部变量。 基本用法 void example() {regist…

猫头虎分享[可灵AI」官方推荐的驯服指南-V1.0

猫头虎分享[可灵AI」官方推荐的驯服指南-V1.0 猫头虎是谁? 大家好,我是 猫头虎,别名猫头虎博主,擅长的技术领域包括云原生、前端、后端、运维和AI。我的博客主要分享技术教程、bug解决思路、开发工具教程、前沿科技资讯、产品评…

Git 基础-创建版本库 git init、添加到暂存区git add、查看状态git status、查看改动git diff

目录 1.创建版本库 git init 1.创建版本库 git init 在目录中创建新的 Git 仓库。 你可以在任何时候、任何目录中这么做,完全是本地化的。 在目录中执行 git init,就可以创建一个 Git 仓库了。 注意: 没事不要手动修改 .git 目录里面的文件,不…

Nginx Http缓存的必要性!启发式缓存有什么弊端?

👀 Nginx Http缓存的必要性!启发式缓存有什么弊端? 简介启发式缓存引发的问题nginx缓存配置 简介 我们在使用React或者Vue开发项目中会使用hash、chunkhash、contenthash来给静态资源文件进行命名。这带来的好处便是当我们部署完项目后&…

安卓微商大师V3.4.0/高级版一键群发僵尸粉检测

一款高效获取客源,备受好评的微商工具,资源丰富,秒速获得客源,大量群客源,都是散客,携手创业,是做微商生意的首选工具。打开即是黑钻高级会员 赶快体验吧 很强大 链接:https://pan.…

2023ICPC亚洲区域赛(合肥)VP补题题解(48th)

2023ICPC亚洲区域赛(合肥)VP补题题解记录 文章目录 2023ICPC亚洲区域赛(合肥)VP补题题解记录写在前面已更新 E F G J,待更新 B I C F and E(签到题和简单题)G. Streak Manipulation题目大意题目分析ac代码参考 J. Takeout Delivering题目大意题目分析ac代码参考 写在…

CSS-position/transform

1 需求 2 语法 在CSS中,positioning 和 transform 是两个非常重要的概念,它们分别用于控制元素在页面上的布局和变换。 Positioning CSS中的position属性用于设置元素的定位类型。它有几个值,包括: static:这是默认…