怎么知道用户是否在线的?如何设计 [ 2.0 版本 ]
怎么知道用户是否在线的?如何设计
最佳答案
-
首先,建一个MEMORY引擎的表
tbl_online
,字段分别为ip
,time
,当用户访问的时候,先判断此ip
是否存在于表tbl_online
,如果不存在,插入一条新记录,如果存在,更新time
。在线会员,可以把ip写成用户的id。
然后,写一个计划任务,每分钟执行一次。比如,咱们网站在线的定义为半小时访问过,所以计划任务会把time
在半小时之外的删除掉。其实MEMORY引擎已经很快了,可以看做是对内存的操作。当然如果换成
cache
会更好。共 7 条回复@╃巡洋艦㊣ ,舰长,有问题请教。
上面有同学提到可以是用redis这类缓存,但是我觉得有问题;tbl_online是一个存储用户访问信息的数据表,如果用redis来存储的话,
1 按照什么样的方式存储每个online信息,是否每个online信息都要一个唯一的键值来代替?还是所有的online ip信息使用一个键值,例如onlineip_info,然后存储的值是一个巨大的数组,包含所有在线ip用户的信息
2 如果是每个online ip使用唯一的键值,例如online_ip1.1.1.1, online_ip1.2.2.2, 那么怎么统计redis里面有多少个online_ip信息?我看到cache api里面没有这样的统计接口。
3 如果是所有的online ip使用一个键值,那么就涉及到每次要对一个巨大的数组做操作,性能肯定是问题。
综上所述,我觉得使用cache来存储是有问题的,请赐教我是不是哪里理解有问题。
其他 3 个回答
鲁鲁槟 东莞
注册时间:2015-12-02
最后登录:2024-08-09
在线时长:124小时36分
最后登录:2024-08-09
在线时长:124小时36分
- 粉丝110
- 金钱5620
- 威望140
- 积分8260