9.4. 用户最后登录时间

最近活跃时间

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

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

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

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

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

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

上一篇 下一篇
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 16

阿伦
更新 last_active_at 字段时禁止自动更新 updated_at 字段
5 个点赞 | 3 个回复 | 分享 | 课程版本 5.5
阿伦
Redis 缓存同步至数据库时的 N+1 问题
5 个点赞 | 2 个回复 | 分享 | 课程版本 5.5
tudous
为什么 Created_at 是一个对象?
3 个点赞 | 4 个回复 | 问答 | 课程版本 5.5
白衣落水
这里为什么不使用`Cache`而使用`Redis`呢?
3 个点赞 | 4 个回复 | 问答 | 课程版本 5.5
zhangpipi
访问器的 $value 不用就不会从数据库取值吗?
1 个点赞 | 4 个回复 | 问答 | 课程版本 5.5
幽弥狂
Redis hSet 不是静态方法,调用出错?
1 个点赞 | 3 个回复 | 问答 | 课程版本 5.5
yxkj
Non-static method Redis 报错
1 个点赞 | 0 个回复 | 问答 | 课程版本 6.x
李小明
登录次数如何记录呢?
0 个点赞 | 2 个回复 | 问答 | 课程版本 6.x
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
fidy
为什么 syncUserActivedAt () 要写成实例方法,而不是类方法?
0 个点赞 | 0 个回复 | 问答 | 课程版本 6.x