【Redis应用】UV统计(四)

这篇具有很好参考价值的文章主要介绍了【Redis应用】UV统计(四)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🚗Redis应用学习·第四站~
🚩本文已收录至专栏:Redis技术学习

一.引入

首先我们要搞懂两个概念:

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

通常来说PV会比UV大很多,所以当我们要去衡量一个网站的情况,我们需要结合多个值一起来分析,通过UV我们可以得知网站的访客量,通过PV我们可以得知页面的访问量,而通过pv与uv的比值我们可以得知网站的用户粘度。

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

二.HyperLogLog使用

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

它对应的命令有三个:
【Redis应用】UV统计(四)

当我们使用PFADD命令添加元素时他会自动帮助我们去除重复元素,只统计不同的元素个数。

三.模拟实现UV统计

由于我们没有那么多的测试用户,所以我们选择利用单元测试模拟100万次用户访问量。

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

   // 准备数组,装填用户数据
        String[] users = new String[1000];
        // 数组角标
        int index = 0;
        for (int i = 0; i < 1000000; i++) {
            // 赋值
            users[index++] = "user_" + i;
            // 每1000条发送以此
            if (i % 1000 == 0) {
                index = 0;
                redisTemplate.opsForHyperLogLog().add("test", users);
            }
        }
        // 统计数量
        Long size = redisTemplate.opsForHyperLogLog().size("test");
        System.out.println("size=" + size);

经过测试:我们可以发现它确实可以帮助我们统计UV并且内存占用极小,但确实存在一定的误差,但是误差是在允许范围内的。
【Redis应用】UV统计(四)文章来源地址https://www.toymoban.com/news/detail-492408.html

到了这里,关于【Redis应用】UV统计(四)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Redis:原理速成+项目实战——Redis企业级项目实战终结篇(HyperLogLog实现UV统计)

    👨‍🎓作者简介:一位大四、研0学生,正在努力准备大四暑假的实习 🌌上期文章:Redis:原理速成+项目实战——Redis实战14(BitMap实现用户签到功能) 📚订阅专栏:Redis:原理速成+项目实战 希望文章对你们有所帮助 这篇是实战部分的终结篇,其实Redis的核心操作,主要是

    2024年01月17日
    浏览(48)
  • 微服务—Redis实用篇-黑马头条项目用户签到功能(使用bitmap实现)与UV统计

    1.1、用户签到-BitMap功能演示 我们针对签到功能完全可以通过mysql来完成,比如说以下这张表 用户一次签到,就是一条记录,假如有1000万用户,平均每人每年签到次数为10次,则这张表一年的数据量为 1亿条 每签到一次需要使用(8 + 8 + 1 + 1 + 3 + 1)共22 字节的内存,一个月则

    2024年02月05日
    浏览(36)
  • 2023-06-13:统计高并发网站每个网页每天的 UV 数据,结合Redis你会如何实现?

    2023-06-13:统计高并发网站每个网页每天的 UV 数据,结合Redis你会如何实现? 答案2023-06-13: 如果统计 PV (页面浏览量)那非常好办,可以考虑为每个网页创建一个独立的 Redis 计数器,并将日期添加为键(key)的后缀。当网页收到请求时,对应的计数器将被递增。对于每天的

    2024年02月08日
    浏览(87)
  • 大数据-玩转数据-Flink 网站UV统计

    在实际应用中,我们往往会关注,到底有多少不同的用户访问了网站,所以另外一个统计流量的重要指标是网站的独立访客数(Unique Visitor,UV)。 对于UserBehavior数据源来说,我们直接可以根据userId来区分不同的用户。 将userid放到SET集合里面,统计集合长度,便可以统计到网

    2024年02月11日
    浏览(46)
  • 基于埋点日志数据的网络流量统计 - PV、UV

    水善利万物而不争,处众人之所恶,故几于道💦 一、 网站总流量数统计 - PV   1. 需求分析   2. 代码实现    方式一    方式二    方式三:使用process算子实现    方式四:使用process算子实现 二、网站独立访客数统计 - UV   1. 需求分析   2. 代码实现   PV全称

    2024年02月14日
    浏览(35)
  • (高阶) Redis 7 第14讲 数据统计分析 实战篇

    存得进,取得出,反应快 抖音电商商品评论:排序+展现+取前10条 用户使用手机APP签到打卡:1天对应一系列用户签到记录,新浪微博/钉钉打卡,如何进行统计 页面访问点击量:一个网页对应一系列的访问点击,淘宝网首页,多少人浏览首页 公司系统上线后,UV、PV、DUV是什

    2024年02月07日
    浏览(45)
  • Redis 实战篇:巧用 Bitmap 实现亿级海量数据统计

    在移动应用的业务场景中,我们需要保存这样的信息:一个 key 关联了一个数据集合。 常见的场景如下: 给一个 userId ,判断用户登陆状态; 显示用户某个月的签到次数和首次签到时间; 两亿用户最近 7 天的签到情况,统计 7 天内连续签到的用户总数; 通常情况下,我们面

    2024年02月02日
    浏览(56)
  • python3 统计redis中每个DB占用的内存大小

            在一些业务中,会使用多个DB来缓存不同类型的业务数据,有时候redis占用内存过高,造成服务异常。         redis可以通过dbsize命令来查看当前选择的DB的key的数量,有时候仅仅看key的数量可能还不能直观反映哪块业务数据占用内存多,redis也没有直接的命令可以

    2024年01月16日
    浏览(40)
  • 统计学 - 数理统计与应用统计的区别

    目录 1. 概率与统计 2. 数理统计与应用统计 概率论是研究随机现象数量规律的数学分支。随机现象是相对于决定性现象而言的,在一定条件下必然发生某一结果的现象称为决定性现象。例如在标准大气压,纯水加热到100℃时水必然会沸腾等。随机现象则是指在基本条件不变的

    2024年02月13日
    浏览(48)
  • 【SAS应用统计分析】数据的描述性统计分析

    声明:本文知识参考内容来自网络,如有侵权请联系删除。本文还参照了B站up主庄7的课程内容【公开课】数据分析与SAS【15课】 目录 实验原理 描述性统计量 1.反映数据集中趋势的特征量 2.反映数据离散程度的特征量 3.反映数据分布形状的特征量 数据的图形描述 直方图 箱线

    2024年02月01日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包