网站统计在线人数是如何实现的?

发布于 2021-06-03 14:09:56

xxx 人在线 最高纪录 xxx

查看更多

关注者
0
被浏览
432
3 个回答
SaltyLeo
SaltyLeo 2021-06-03
这家伙很懒,什么也没写!

我最近做了个类似的模块,原理大致为:使用 redis 添加每个访客的唯一 id 并设置 1 分钟过期时间,每次访问统计以下当前存活的数量就是最近一分钟在线的数量了。 最高应该是直接落库了。

kop1989
kop1989 2021-06-03
这家伙很懒,什么也没写!

有几种常见的策略。
1 、网页轮询报活。
2 、token 不过期就算 online
3 、真,在线。(比如用长连接)
4 、最后一次请求时间小于 XX 就算在线。

从线向上观察,要么是 2 、要么是 4 、
总之,其实未必非常准确。

Jooooooooo
Jooooooooo 2021-06-03
这家伙很懒,什么也没写!

大概想了一个可行的方案

每个用户访问首页则对 user_{userId}_visit 设定 10 分钟的过期, 如果失败, 则 10 分钟内统计过, 跳过

如果成功, 那么这是一个新的用户, 则对当前分钟的计数 key 自增 1, visit_count_{minute}

统计在线人数把前十分钟的计数 key 加起来就行

一个简单的优化是把总人数提前算好, 永远只拿这种数字. 可以每分钟的第 5 秒累加一下前十分钟的数然后放到一个新的 key 里, 这样每次都读这个 key 就行

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览