登录
首页 >  数据库 >  Redis

Redis实现UV统计的示例代码

来源:脚本之家

时间:2023-02-25 09:00:51 448浏览 收藏

今天golang学习网给大家带来了《Redis实现UV统计的示例代码》,其中涉及到的知识点包括RedisUV统计等等,无论你是小白还是老手,都适合看一看哦~有好的建议也欢迎大家在评论留言,若是看完有所收获,也希望大家能多多点赞支持呀!一起加油学习~

一、HyperLogLog

1、为什么用HyperLogLog

先介绍两个概念:

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

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

那么我们要怎么更好的记录呢?就用到 HyperLogLog

2、HyperLogLog是什么

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

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

不管加入多少重复元素,HyperLogLog都只记录一次,天生适合做uv的统计

二、实现UV统计

我们直接用单元测试,向 HyperLogLog 中添加 100 万条数据,看看内存占用和统计效果如何:

@Test
void testHyperLogLog() {
    String[] values = new String[1000];
    int j = 0;
    for (int i = 0; i 

测试结果:

我们统计出来的数据跟100万非常接近,误差在0.02。而且发现内存只消耗了14kb非常非常低

终于介绍完啦!小伙伴们,这篇关于《Redis实现UV统计的示例代码》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布数据库相关知识,快来关注吧!

声明:本文转载于:脚本之家 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表