当前位置: 首页 > news >正文

4 redis的HyperLogLog入门原理

一、HyperLogLog(字符串类型)

需求:大型网站(不在大厂基本上用不到) 每个网页每天的 UV 数据(独立访客),统计如何实现?(尽量少的占用存储空间)

  1. Redis 提供了 HyperLogLog 数据结构就是用来解决这种统计问题的。
  2. HyperLogLog 提供不精确的去重计数方案,虽然不精确但是也不是非常不精确,标准误差是 0.81%,这样的精确度已经可以满足上面的 UV统计需求了。

HyperLogLog提供了3个命令: pfadd、pfcount、pfmerge

1、百万级用户访问网站,单个页面的统计差异

在这里插入图片描述

2、Pfadd

Pfadd 命令将所有元素参数添加到 HyperLogLog 数据结构中
基本语法如下:

redis 127.0.0.1:6379> PFADD key element [element ...]

返回值:
整型,如果至少有个元素被添加返回 1, 否则返回 0。
例如:统计2023-10-10的用户登录数量

redis 127.0.0.1:6379> PFADD login:2023-10-10 p001 p002 p003 p004 p005 p006 
(integer) 1
redis 127.0.0.1:6379> PFCOUNT login:2023-10-10
(integer) 6
3、Pgmerge

Pgmerge 命令将多个 HyperLogLog 合并为一个 HyperLogLog。
合并后的 HyperLogLog 的基数估算值是通过对所有 给定 HyperLogLog 进行并集计算得出的。

redis 127.0.0.1:6379> PFADD hll1 foo bar zap a
(integer) 1
redis 127.0.0.1:6379> PFADD hll2 a b c foo
(integer) 1
redis 127.0.0.1:6379> PFMERGE hll3 hll1 hll2
OK
redis 127.0.0.1:6379> PFCOUNT hll3		//取并集,且去重
(integer) 6

相关文章:

  • java发送媒体类型为multipart/form-data的请求
  • 云课五分钟-0Cg++默认版本和升级-std=c++17
  • 将 Fedora 38 平滑升级至 Fedora 39
  • 工厂设计模式
  • 聊聊logback的MDCFilter
  • CSS英文单词强制截断换行
  • Redisson 分布式锁实战应用解析
  • 【2017年数据结构真题】
  • 基于springboot实现应急救援物资管理系统项目【项目源码】计算机毕业设计
  • 面试求职者
  • 在Ubuntu上用sane api实现通用扫描功能
  • 8.5 Windows驱动开发:内核注册表增删改查
  • 基于单片机体温脉搏检测控制系统及源程序
  • Linux控制---进程程序替换
  • [内存泄漏][PyTorch](create_graph=True)
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • CEF与代理
  • JAVA并发编程--1.基础概念
  • Js基础——数据类型之Null和Undefined
  • Linux gpio口使用方法
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • node学习系列之简单文件上传
  • python_bomb----数据类型总结
  • Vue.js-Day01
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 入口文件开始,分析Vue源码实现
  • 什么软件可以剪辑音乐?
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 微信开源mars源码分析1—上层samples分析
  • 微信支付JSAPI,实测!终极方案
  • 大数据全解:定义、价值及挑战
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • (11)MATLAB PCA+SVM 人脸识别
  • (独孤九剑)--文件系统
  • (三)elasticsearch 源码之启动流程分析
  • (十)T检验-第一部分
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .NET 8.0 发布到 IIS
  • .net CHARTING图表控件下载地址
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)
  • .Net+SQL Server企业应用性能优化笔记4——精确查找瓶颈
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件
  • .net经典笔试题
  • .Net中ListT 泛型转成DataTable、DataSet
  • // an array of int
  • @WebServiceClient注解,wsdlLocation 可配置
  • [ linux ] linux 命令英文全称及解释