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

JAVA-实战8 Redis实战项目—雷神点评(12)UV统计

Ah! 光を追いかけてきたんだよ… 啊NMD这么多天终于把Redis实战的光追完了

UV统计

UV

搞懂两个概念:

UV:全称Unique Visitor,也叫独立访客量,是指通过互联网访问、浏览这个网页的自然人。1天内同一个用户多次访问该网站,只记录1次
PV:全称Page View,也叫页面访问量点击量用户每访问网站的一个页面,记录1次PV,用户多次打开页面,则记录多次PV。往往用来衡量网站的流量。

可以预见的是,UV统计在服务端做会比较麻烦,因为要判断该用户是否已经统计过了,需要将统计过的用户信息保存。但是如果每个访问的用户都保存到Redis中,数据量会非常恐怖。

Hyperloglog

Hyperloglog(HLL)是从Loglog算法派生的概率算法,用于确定非常大的集合的基数,而不需要存储其所有值。

Redis中的HLL是基于string结构实现的,单个HLL的内存永远小于16kb,内存占用低的令人发指。作为代价,其测量结果是概率性的,有小于0.81%的误差。不过对于UV统计来说,这完全可以忽略

对应Redis的操作指令:

PFADD:向指定key中插入元素
PFCOUNT:统计指定key中元素数量(可能会存在误差)
PFMERGE:合并多个key到一个指定key中

-- 插入元素
PFADD key element [element ...]-- 统计元素数量
PFCOUNT key [key ...]-- 合并
PFMERGE destkey sourcekey [sourcekey ...]

image
image
查看其内部发现其不记录实际值,只记录大小
image

实现UV统计

通过向Redis中插入1000w条数据并进行HLL操作来模拟UV统计,以此评估其内存性能

测试之前的内存大小
image

测试代码如下:

@Test
public void TestHyperLogLog() {String[] values = new String[5000];for(int i=0;i<10000000;++i) {values[i%5000] = "user_"+i;if(i%5000==4999) {stringRedisTemplate.opsForHyperLogLog().add("TestHyperLogLog",values);}}Long SizeCount = stringRedisTemplate.opsForHyperLogLog().size("TestHyperLogLog");System.out.println("Now Size is "+SizeCount);
}

可以看到误差并不大
image

测试完的内存大小,内存增长了976256−961856=14400Byte,也就是1414.0625KB,内存消耗可观
image


僕たちはひとつの光 我们是合而为一的光芒
image

http://www.jsqmd.com/news/780326/

相关文章:

  • 传奇游戏|热血传奇|复古传奇|电脑版传奇网页游戏|复古传奇游戏玩与攻略|602游戏剖析
  • 嵌入式系统电源优化:CMOS功耗分析与DVFS技术实践
  • AI编程助手高效配置指南:Cursor与Claude Code专属工具箱实战
  • Ubuntu下载地址
  • 从2D到3D NAND:存储技术演进、控制器挑战与未来展望
  • Qoder Reset工具:彻底清除AI编程助手本地身份与指纹数据
  • Redis别再只当缓存用!8种常用数据结构+实战选型,一看就会
  • Suno Style API 集成教程
  • 从硬连线到软定义:可编程逻辑器件(PAL/CPLD/FPGA)演进史与技术解析
  • 开关电源环路补偿设计:驯服两级LC滤波器的相位滞后
  • 案例之 逻辑回归_电信用户流失预测
  • 【光学】矩阵传输的多模光纤仿真与建模【含Matlab源码 15417期】
  • 强烈推荐一个轻量可嵌入的 .NET 向量数据库:SharpVector
  • QT下载并安装
  • KES数据库安全、权限、审计实战
  • 智能体基准测试框架Agent-Harness:从评估到改进的工程实践
  • AI智能体数据压缩与安全审计:Liquefy的领域感知引擎与主动防护
  • 高性能MCP服务器实战:AI应用通信优化与性能调优指南
  • ARM浮点转整数指令VCVTA原理与应用详解
  • 基于 C# 的轻量级离线工业语音播报方案
  • skillspm:AI智能体技能包管理器,实现环境管理的声明式工作流
  • 区间动态规划——【# P3146 [USACO16OPEN] 248 G】
  • AI API桥接器设计:实现Claude与DeepSeek协议转换的工程实践
  • OpenClaw配置开发提效:VS Code扩展的智能验证与工作流实践
  • 百元成本训练GPT-2:nanochat极简框架与缩放定律实践
  • 四足机器人滑行控制:贝叶斯优化与强化学习协同设计
  • SKILL推荐实战 - 80%测试覆盖率不是梦,而是标准工作流
  • 2026年4月品质好的中餐食材供应工厂推荐,黄牛肉/糊辣乌鸡/嫩肉片/猪肉丸/火锅食材供应,中餐食材供应品牌怎么选择 - 品牌推荐师
  • 2026 最新版全网最细网络安全学习路线,从零基础小白逆袭实战专家全覆盖
  • 一文读懂电阻所有知识1