9.4. 用户最后登录时间

最近活跃时间

接下来我们将在用户的个人中心头像下显示此用户的『最后活跃时间』。

在 Web 应用中,很多时候应用的效率瓶颈会出现在『数据库系统』中,所以作为一个合格的 Web 开发工程师,我们要严格控制好我们的数据库开销。之前我们已经对一些不需要频繁修改的数据做了缓存,如『活跃用户』数据和『资源推荐』数据,以此减少数据库读取的压力。然而,在数据库中操作中,『写入』对数据库造成的压力,要远比『读取』压力高得多。

想要准确地跟踪用户的最后活跃时间,就必须在用户每一次请求服务器时都做记录,我们使用的主数据是 MySQL,也就是说每当用户访问一个页面,我们都将 MySQL 数据库里的 users 表写入数据。当我们有很多用户频繁访问站点时,这将会是数据库的一笔巨大开销。

我们可以使用 Redis 来记录用户的访问时间,Redis 运行在机器的内存上,读写效率都极快。不过为了保证数据的完整性,我们需要定期将 Redis 数据同步到数据库中,否则一旦 Redis 出问题或者执行了 Redis 清理操作,用户的『最后活跃时间』将会丢失。

基本思路如下:

  1. 记录 - 通过中间件过滤用户所有请求,记录用户访问时间...

本文章首发在 LearnKu.com 网站上。

为了保证课程的高品质,我们需要对课程进行收费。付费后 才能观看剩余内容。 购买

上一篇 下一篇
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 13

阿伦
Redis 缓存同步至数据库时的 N+1 问题
5 个点赞 | 1 个回复 | 分享 | 课程版本 5.5
tudous
为什么 Created_at 是一个对象?
3 个点赞 | 4 个回复 | 问答 | 课程版本 5.5
阿伦
更新 last_active_at 字段时禁止自动更新 updated_at 字段
3 个点赞 | 3 个回复 | 分享 | 课程版本 5.5
白衣落水
这里为什么不使用`Cache`而使用`Redis`呢?
1 个点赞 | 4 个回复 | 问答 | 课程版本 5.5
zhangpipi
访问器的 $value 不用就不会从数据库取值吗?
1 个点赞 | 3 个回复 | 问答 | 课程版本 5.5
Chasers9527
Redis hSet 不是静态方法,调用出错?
1 个点赞 | 3 个回复 | 问答 | 课程版本 5.5
tw0325795
[已解决] PhpStorm 出現 member has private access
0 个点赞 | 2 个回复 | 问答 | 课程版本 5.7
xingxiaoli
执行命令的时候获取不到记录的数据
0 个点赞 | 1 个回复 | 问答 | 课程版本 5.5
vanman
在 App\Models\User 提示 trait 中 notifications 方法冲突
0 个点赞 | 1 个回复 | 问答 | 课程版本 5.5