首页 新闻 会员 周边 捐助

使用NET Core,如何方便有效的统计实时在线人数?有相关插件推荐吗?

0
悬赏园豆:10 [已解决问题] 解决于 2020-09-29 08:53

如题,我想在一个业务系统中统计实时在线人数,有什么比较好的方式?

尾随前行的主页 尾随前行 | 初学一级 | 园豆:0
提问于:2020-09-09 13:44
< >
分享
最佳答案
1

redis sortedset<loginId, upTime> 记录在线人数
登录: zadd
退出: zrem
已登录请求: zadd(update) 性能考虑可以N秒更新一次,上次更新时间可以用session cookie jwt 之类保持
N秒周期移除掉线的人: zremrangebyscore key 0 datetime.now - x minute(多久没请求则视为掉线)
N秒或者实时刷新在线人数: zcard直接拿, zcount now-x minute now 实时统计在线人数。

如果你是单机, 直接一个memorycahce 就完事了。。。

收获园豆:10
czd890 | 专家六级 |园豆:14482 | 2020-09-10 00:06

多久没请求则视为掉线,这个规则能改成自动监听cookies或者session失效吗?

尾随前行 | 园豆:0 (初学一级) | 2020-09-10 16:13

@尾随前行: 你的session有固定的过期时间呀... 比如30分钟.

czd890 | 园豆:14482 (专家六级) | 2020-09-11 13:26
其他回答(3)
0

这个要看业务,看要怎么统计

通信的搞程序 | 园豆:1757 (小虾三级) | 2020-09-09 15:10

就是在用户登陆、退出、登陆失效统计在线人数
用户登陆、退出这个属于主动操作,系统能记录到,现在不知道怎么解决登陆失效这个统计。在代码中调用了HttpContext.SignInAsync,那我该怎么知道 Cookie或者 Session的过期时间呢

支持(0) 反对(0) 尾随前行 | 园豆:0 (初学一级) | 2020-09-09 16:08
0

这个要怎么统计不是由你的业务决定的吗? 哪来的插件

不知道风往哪儿吹 | 园豆:2035 (老鸟四级) | 2020-09-09 15:40

是的,是由业务决定的。 系统除了登陆和退出这两个操作能去统计在线人数,还有一个登陆状态失效也需要统计在线人数,这里不知道该怎么去统计 。。

支持(0) 反对(0) 尾随前行 | 园豆:0 (初学一级) | 2020-09-09 16:10
0

把登录用户的在状态记录在redis

比如 离线=0 在线=1

楠木大叔 | 园豆:2081 (老鸟四级) | 2020-09-09 22:38
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册