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

帝国做的网站装修设计公司快餐店

帝国做的网站,装修设计公司快餐店,灌南网站建设,郑州建设网站基于Redis实现-UV统计 本文将使用HyperLogLog来实现UV统计。 首先我们搞懂两个概念: UV:全称Unique Visitor,也叫独立访客量,是指通过互联网访问、浏览这个网页的自然人。1天内同一个用户多次访问该网站,只记录一次…

基于Redis实现-UV统计

本文将使用HyperLogLog来实现UV统计。

首先我们搞懂两个概念:

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

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

1.HyperLogLog(HLL)

HyperLogLog(HLL)是从Loglog算法派生的概率算法用于确定非常大的集合的基数,而不需要存储其所有值。相关算法原理大家可以参考:算法介绍
Redis中的HLL是基于string结构实现的,单个HLL的内存永远小于16kb,内存占用极低!作为代价,其测量结果是概率性的,有小于0.81%的误差。不过对于UV统计来说,这完全可以忽略

#1. PFADD — 添加元素到 HyperLogLog
#作用:向指定的 HLL 中添加一个或多个元素。
#返回值:1:如果至少有一个新元素被添加  0:如果所有元素已经存在(不会重复计数)
# 向 "daily_uv" 添加 3 个用户访问记录
PFADD daily_uv user1 user2 user3
(integer) 1  # 表示有新增数据# 再次添加(user1 已存在,但 user4 是新用户)
PFADD daily_uv user1 user4
(integer) 1  # user4 是新元素,返回 1
--------------------------------------------------------------------------------------------
#2. PFCOUNT — 计算基数(不重复元素数量)
#作用:返回 HLL 中近似的不重复元素数量(允许少量误差)。
#返回值:估算的基数(如 UV 数)。
# 查询 "daily_uv" 的独立访客数
PFCOUNT daily_uv
(integer) 4  # 返回近似值(实际可能是 4 或 3.96≈4)# 计算多个 HLL 的并集(如统计一周的 UV)
PFCOUNT monday_uv tuesday_uv wednesday_uv
(integer) 1250  # 返回 3 天的总 UV(去重后)
--------------------------------------------------------------------------------------------
#3. PFMERGE — 合并多个 HyperLogLog
#作用:将多个 HLL 合并成一个新的 HLL(计算并集)。
#返回值:OK(成功时返回)。
# 合并 "monday_uv" 和 "tuesday_uv" 到 "weekly_uv"
PFMERGE weekly_uv monday_uv tuesday_uv
OK# 查询合并后的 UV
PFCOUNT weekly_uv
(integer) 850  # 返回两天的总 UV(去重后)

在这里插入图片描述

2.使用UV统计

这里先查看此时Redis内存使用情况:

  • used_memory:1485704(字节)
  • used_memory_human:1.42M

在这里插入图片描述

我们向Redis插入100万条数据:

@Resource
private StringRedisTemplate stringRedisTemplate;
@Test
void testHyperLogLog() {// 准备数组,装用户数据String[] users = new String[1000];// 数组角标int index = 0;for (int i = 1; i <= 1000000; i++) {// 赋值users[index++] = "user_" + i;// 每1000条发送一次if (i % 1000 == 0) {index = 0;stringRedisTemplate.opsForHyperLogLog().add("Num", users);}}// 统计数量Long size = stringRedisTemplate.opsForHyperLogLog().size("Num");System.out.println("size = " + size);
}

注意:在Java中size对应PFCOUNT命令,add对应PFADD命令,union对应PFMERGE命令。在这里插入图片描述

插入结果:
在这里插入图片描述

此时我们查看Redis的内存使用情况:

  • used_memory:1500088(字节)
  • used_memory_human:1.43M
    在这里插入图片描述
    (1500088-1485704)/1024=14.04kb,可以看到内存使用极少!!
    因此当我们需要统计大数据量时不妨考虑考虑UV统计。

文章转载自:

http://4MVAt4OI.wbxrL.cn
http://matTGTUj.wbxrL.cn
http://EFibigbf.wbxrL.cn
http://jIDB3NJl.wbxrL.cn
http://dDigZG8G.wbxrL.cn
http://8CrlNeE0.wbxrL.cn
http://vSYWvHbc.wbxrL.cn
http://n4I8Pwj9.wbxrL.cn
http://t3M4DwH1.wbxrL.cn
http://hJHxMfd8.wbxrL.cn
http://jZ7s9eW1.wbxrL.cn
http://cz6XFkbN.wbxrL.cn
http://TdqCbhuC.wbxrL.cn
http://2wlrBh28.wbxrL.cn
http://5ur2nfJ5.wbxrL.cn
http://lwumcnlv.wbxrL.cn
http://wPAXvuvX.wbxrL.cn
http://nULh80RS.wbxrL.cn
http://KhCVfsM0.wbxrL.cn
http://TmD4xLE6.wbxrL.cn
http://Ae8ZAC65.wbxrL.cn
http://GtmxYwT9.wbxrL.cn
http://bzvgeZgR.wbxrL.cn
http://bgttNIvN.wbxrL.cn
http://6WIButMq.wbxrL.cn
http://A5V9mo7S.wbxrL.cn
http://s9gRVDrr.wbxrL.cn
http://o74uyaJR.wbxrL.cn
http://smhAUCn6.wbxrL.cn
http://UC0gr1rR.wbxrL.cn
http://www.dtcms.com/wzjs/633555.html

相关文章:

  • 网站制作如何做免费企业查询网站
  • 帝国建站模板电子商务主要干嘛
  • hanchengkeji杭州网站建设新版在线天堂网
  • 怎样进入网站的后台如何做一个网页项目
  • 河海大学土木专业类建设网站苏州虎丘区建设局网站
  • c net 做网站好吗wordpress嵌入网页
  • 海口有做棋牌娱乐网站的吗网站名称查询
  • 网站上面的体验卡怎么做久久室内设计网
  • 国家工信部备案网站wordpress搜索框位置
  • 长治一般做一个网站需要多少钱楚风网站建设工作室
  • 国外网站dns 地址禁止阿里云建站保证销售额
  • dw软件做的东西怎么在网站用百度快速查询
  • 网站建设哪家wordpress主题国外优秀
  • 北京市建设质量监督网站哪个网站能接施工图来做
  • 一个网站放两个vps企业网站打不开什么原因
  • 在线工具网站wordpress 好用的编辑器
  • 锡林浩特网站建设开发网站做下载功能
  • 权威发布海报网站优化要做哪些工作
  • 简洁大气网站设计wordpress5.0中文编辑器
  • asp+sql server典型网站建设案例(源码)3wordpress注册没用
  • 重庆律师网站网站的关键词在哪里设置
  • 哪里有网站监控工具网站开发需要团队吗
  • 中国建设协会网站php儿童摄影网站源码
  • 中山市网站建设 中企动力厦门手机网站建设方案
  • 先做网站还是先备案网页设计规范字体
  • 快速的网站开发wordpress访问统计
  • 做内销网站做网站如何选择颜色
  • 温岭做网站公司福田商城网站制作
  • 南充网站建设价格黄石商城网站建设
  • 做网站公司哪个好怎么创建网站论坛