xxx 人在线 最高纪录 xxx
查看更多
我最近做了个类似的模块,原理大致为:使用 redis 添加每个访客的唯一 id 并设置 1 分钟过期时间,每次访问统计以下当前存活的数量就是最近一分钟在线的数量了。 最高应该是直接落库了。
有几种常见的策略。1 、网页轮询报活。2 、token 不过期就算 online3 、真,在线。(比如用长连接)4 、最后一次请求时间小于 XX 就算在线。
从线向上观察,要么是 2 、要么是 4 、总之,其实未必非常准确。
大概想了一个可行的方案
每个用户访问首页则对 user_{userId}_visit 设定 10 分钟的过期, 如果失败, 则 10 分钟内统计过, 跳过
如果成功, 那么这是一个新的用户, 则对当前分钟的计数 key 自增 1, visit_count_{minute}
统计在线人数把前十分钟的计数 key 加起来就行
一个简单的优化是把总人数提前算好, 永远只拿这种数字. 可以每分钟的第 5 秒累加一下前十分钟的数然后放到一个新的 key 里, 这样每次都读这个 key 就行
发布 问题
分享 好友
手机 浏览
回到 顶部