首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

基于 Redis HyperLogLog 实现用户 UV 统计功能

引子 在通过 Redis 实现全站访问计数器中,学院君已经给大家演示了统计用户 PV 的实现思路,今天我们来看看如何实现用户 UV 的统计。...统计用户 UV 和统计用户 PV 不同,不能只对统计指标对应的键值做简单的自增操作,还要对来自同一用户的浏览做去重操作,比如张三今天浏览了学院君网站首页 10 次,那么对应的 PV 需要累加 10,而...通过 SET 结构实现 UV 统计 基于去重功能,很多同学可能会联想到可以通过 Redis 的 SET 结构实现用户 UV 统计 —— 将统计指标+时间后缀作为键名,然后每当有用户访问时,将对应的用户标识通过...但是如果放到大型站点就不合适了,比如我们要统计上百万不同页面的用户 UV用户量级在千万级甚至亿级,为了维护每个页面用户 UV 统计的 SET 结构,需要耗费大量的 Redis 存储空间,对于爆款页面,...$key = config('app.name') . '.uv.' . date('Ymd'); // 根据用户是否登录获取用户唯一标识 if (Auth

1.2K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    数亿的用户,如何统计独立用户访问量?

    当一个用户访问的时候,如果用户登陆过,那么我们就使用用户的id,如果用户没有登陆过,那么我们可以在前端页面随机生成一个key用来标识用户,当用户访问的时候,我们可以使用HSET命令,key可以选择URI...对于没有登陆的用户,我们也可以使用哈希算法,把对应的用户标识哈希成一个数字id。bitset非常的节省内存,假设有1亿个用户,也只需要100000000/8/1024/1024约等于12兆内存。 ?...优点:占用内存更小,查询方便,可以指定查询某个用户,数据可能略有瑕疵,对于非登陆的用户,可能不同的key映射到同一个id,否则需要维护一个非登陆用户的映射,有额外的开销。...# 使用概率算法 对于拼多多这种多个页面都可能非常多访问量的网站,如果所需要的数量不用那么准确,可以使用概率算法,事实上,我们对一个网站的UV的统计,1亿跟1亿零30万其实是差不多的。...对于拼多多这种超多用户的特别适用。 缺点:查询指定用户的时候,可能会出错,毕竟存的不是具体的数据。总数也存在一定的误差。 上面就是常见的3种适用Redis统计网站用户访问数的方法了。

    2.6K41

    怎么提高独立博客的用户体验

    现在越来越多的seo人员都开了自己的独立博客,不仅可以从实践中领悟到更深层次的东西,还可以在此与更多的朋友分享与讨论,扩展自己的人脉;同时也可以锻炼自己的写作能力与执行力,总之我认为建一个独立博客是好处多多的...因此,要有一个详细的背景调查,分析目标受众的属性,分析他们的需求和行为特征,这样才能有的放矢, 实现网站用户体验优化的目的。下面就来说说如何提高独立博客的用户体验。...一个好的独立博客自然会有一个与用户互动的评论功能,当别人看过你的文章之后,觉得内心大受震憾,就会写下自己的一些见解。很多时候大家都是看别人在评论,他写会去评论的。...一个网站的主题就像一个人的衣服,与众不同的主题会让你的用户对你的博客记忆犹新,留下不错的影响。 其实,个人认为对于独立博客来说,做好了用户体验也就不用愁其他的了,其他神马都是浮云。...以上只是个人一些观点, 希望我的总结能给拥有独立博客并且希望做好用户体验朋友带来一点点帮助。

    38730

    网格UV展开

    原文链接 UV展开是什么 参数曲面的参数域变量一般用UV字母来表达,比如参数曲面F(u,v)。所以一般叫的三维曲面本质上是二维的,它所嵌入的空间是三维的。...单连通圆盘拓扑的UV展开:如图1情况所示。这种情况下,顶点和纹理坐标是一一对应的,一个顶点可以存一个纹理坐标。一般这类的UV展开,都是使用的顶点纹理坐标的概念。 任意网格的UV展开:如图2情况所示。...你可以把这两个网格看成是两个独立的网格。纹理坐标的缝隙是2D网格的边界。网格割缝是把网格的拓扑结构改变了,割缝处会产生新的网格顶点。纹理坐标缝隙,是在展开的UV空间中,顶点纹理坐标的缝隙。...如下图所示,网格UV展开到平面后,把网格对应的贴图填充到UV坐标域,就得到了右边的纹理图。网格在渲染的时候,每个三角片离散化后,每个离散点会根据UV坐标值去纹理图里拾取颜色。...拾取的方法,可以是UV坐标值最近点颜色,也可以根据UV坐标值的相邻四个像素做双线性差值。 有兴趣的读者,欢迎参考视频版本

    3K30

    如何用 Redis 统计独立用户访问量?

    当一个用户访问的时候,如果用户登陆过,那么我们就使用用户的id,如果用户没有登陆过,那么我们也能够前端页面随机生成一个key用来标识用户用户访问的时候,我们可以使用HSET命令,key可以选择URI...对于没有登陆的用户,我们也可以使用哈希算法,把对应的用户标识哈希成一个数字id。bitset非常的节省内存,假设有1亿个用户,也只需要100000000/8/1024/1024约等于12兆内存。...优点:占用内存更小,查询方便,可以指定查询某个用户,数据可能略有瑕疵,对于非登陆的用户,可能不同的key映射到同一个id,否则需要维护一个非登陆用户的映射,有额外的开销。...使用概率算法 对于拼多多这种多个页面都可能非常多访问量的网站,如果所需要的数量不用那么准确,可以使用概率算法 事实上,我们对一个网站的UV的统计,1亿跟1亿零30万其实是差不多的。...对于拼多多这种超多用户的特别适用。 缺点:查询指定用户的时候,可能会出错,毕竟存的不是具体的数据。总数也存在一定的误差。 上面就是常见的3种适用Redis统计网站用户访问数的方法了。

    88720

    如何用 Redis 统计独立用户访问量?

    当一个用户访问的时候,如果用户登陆过,那么我们就使用用户的id,如果用户没有登陆过,那么我们也能够前端页面随机生成一个key用来标识用户,当用户访问的时候,我们可以使用HSET命令,key可以选择URI...32个用户,空间节省了32倍!...对于没有登陆的用户,我们也可以使用哈希算法,把对应的用户标识哈希成一个数字id。bitset非常的节省内存,假设有1亿个用户,也只需要100000000/8/1024/1024约等于12兆内存。 ?...优点占用内存更小,查询方便,可以指定查询某个用户,数据可能略有瑕疵,对于非登陆的用户,可能不同的key映射到同一个id,否则需要维护一个非登陆用户的映射,有额外的开销。...使用概率算法 对于拼多多这种多个页面都可能非常多访问量的网站,如果所需要的数量不用那么准确,可以使用概率算法,事实上,我们对一个网站的UV的统计,1亿跟1亿零30万其实是差不多的。

    1.4K10

    如何用 Redis 统计独立用户访问量?

    当一个用户访问的时候,如果用户登陆过,那么我们就使用用户的id,如果用户没有登陆过,那么我们也能够前端页面随机生成一个key用来标识用户,当用户访问的时候,我们可以使用HSET命令,key可以选择URI...32个用户,空间节省了32倍!...对于没有登陆的用户,我们也可以使用哈希算法,把对应的用户标识哈希成一个数字id。bitset非常的节省内存,假设有1亿个用户,也只需要100000000/8/1024/1024约等于12兆内存。 ?...优点占用内存更小,查询方便,可以指定查询某个用户,数据可能略有瑕疵,对于非登陆的用户,可能不同的key映射到同一个id,否则需要维护一个非登陆用户的映射,有额外的开销。...使用概率算法 对于拼多多这种多个页面都可能非常多访问量的网站,如果所需要的数量不用那么准确,可以使用概率算法,事实上,我们对一个网站的UV的统计,1亿跟1亿零30万其实是差不多的。

    89610

    UnityShader实例06:UV动画

    UV动画 UV动画,顾名思义,就是针对UV做的动画。在游戏中,一些动态水面,飞流直下的瀑布,流动的岩浆,跳动的火焰等等,很多都是通过操作UV做的动画。...在unity中我可以实用挂载脚本或者直接针对UV key动画帧做动画操作,而在本文中将通过shader编写实现三个比较常见的UV动画方式: 1.UV位移动画 2.UV序列帧动画 3.UV旋转动画...UV旋转动画 UV旋转动画在游戏开发中用得相对比较少,特效师一般会采用其他方式代替,这里将用shader实现一个UV旋转的动画。UV旋转实际上一个2D旋转,有关2D旋转的理论在这里。...(cos(_Speed*_Time.x),sin(_Speed*_Time.x)); //获得旋转后的uv坐标值 uv=float2((uv.x*rotate.x-uv.y*rotate.y)...=float2((uv.x*rotate.x-uv.y*rotate.y),(uv.x*rotate.y+uv.y*rotate.x)); uv+=0.5;

    1.4K10

    UV、PV、TPS、QPS、DAU

    IP(Internet Protocol) 独立 IP 数,是指 1 天内多少个独立的 IP 浏览了页面,即统计不同的 IP 浏览用户数量。...IP 是基于用户广域网 IP 地址来区分不同的访问者的,所以,多个用户(多个局域网 IP)在同一个路由器(同一个广域网 IP)内上网,可能被记录为一个独立 IP 访问者。...如果用户不断更换 IP,则有可能被多次统计。 UV(Unique Visitor) 指独立访客访问数,统计1天内访问某站点的用户数(以 cookie 为依据),一台电脑终端为一个访客。...IP(Internet Protocol) 独立 IP 数,是指 1 天内多少个独立的 IP 浏览了页面,即统计不同的 IP 浏览用户数量。...DAU通常统计一日(统计日)之内,登录或使用了某个产品的用户数(去除重复登录的用户),与UV概念相似。

    2.2K31

    Java统计网站PV、UV

    前言 当一个系统上线后,基本都需要统计用户活跃度,活跃度一般有两个指标,一个是PV(Page View)页面浏览量,一个是UV(Unique Visitor)唯一用户量,比如微信小程序后台中就有每小时UV...UV(Unique Visitor)独立用户量,一天当中访问网站的用户数,不管是上午访问还是下午访问,一个用户都只记录一次。...为什么需要统计PV,UV 分析知道哪些页面是用户经常访问的,缓存常用数据,针对性的提升某些接口效率。如果某些页面访问量远远高于其他页面,我们还可以单独部署一台服务器给这些高访问页面使用。...UV统计,同样日期为key,value为唯一标识用户的ID或IP的Set集合(本文使用用户IP来作为唯一标识),用户访问时如果Set中不存在当前访问用户IP,则UV+1,并将IP加入Set中;当我们读取...如果不想在Redis中保存太多数据,我们可以把每天的PV、UV数据落库一次。 功能实现 这里使用RedisTemplate访问redis,使用Hutool的ServletUtil获取用户ip。

    12410

    three.js UV映射简述

    今天郭先生来说一说uv映射,什么是uv映射?uv映射就是将二维的贴图映射到对象的一个面(或者多个面)上。说到这个问题,我们就不得不了解一下Geometry的点、面和uv的结构。...再说说uv映射,一个纹理图的原点在其左下方,坐标为(0,0),右下方为(1,0),左上方为(0,1),右上方为(1,1) image.png 未标题1.png 在Geometry中,faceVertexUvs...决定了uv映射的关系,如下如就是uv映射关系 image.png 捕获555555555.PNG 我们可以看出第一个三角面对应一个二维点数组new THREE.Vector2(0,1), new THREE.Vector2...var mate = new THREE.MeshBasicMaterial({map: new THREE.TextureLoader().load('/static/images/animal/an-uv.png...这里faceVertexUvs数组的第一维度是材质的索引,第二维度才是面的uv贴图映射关系,由于只有一个材质,所以这里的索引都是0。 这节说了一下uv的使用,下一节说一说关于它的小应用。

    5.5K30

    如何用redis统计海量UV

    统计uv的常用方法以及优缺点 其实要是单纯的统计pv是比较好办的,直接用redis的incr就行,但是uv的话,它要去重,同一个用户一天之内的多次访问请求只能计数一次。...这就要求每一个网页请求都需要带上用户的 ID,无论是登陆用户还是未登陆用户都需要一个唯一 ID 来标识。...set 比较容易想到的是为每一个页面一个独立的 set 集合来存储所有当天访问过此页面的用户 ID。当一个请求过来时,我们使用 sadd 将用户 ID 塞进去就可以了。...hash hash和set在处理uv的问题上其实类似,把用户id作为hash的key的确可以去重,但是如果访问量大了之后也会消耗很大的内存空间 bitmap bitmap同样是一种可以统计基数的方法,可以理解为用...具体实现 pfadd 用法和 set 集合的 sadd 是一样的,来一个用户 ID,就将用户 ID 塞进去就是。pfcount 和 scard 用法是一样的,直接获取计数值。

    1.2K40
    领券