【发布时间】:2019-06-13 14:47:15
【问题描述】:
我正在用 PHP 创建一个论坛应用程序。当用户进入论坛的第一页时,他会得到最近一次更新的 25 个主题。
我想缓存这 25 个主题,以便永远不会调用数据库来获取第一页,这基本上是它的工作原理:
- 每次用户在主题上发帖/创建主题时都会更新缓存
- 此主题已添加到缓存中
- 从缓存中删除最旧的更新主题
这样,缓存总是包含最近 25 个更新的主题,并且服务器永远不会向数据库发出请求以获取论坛的第一页。
我已经在网上搜索过解决方法:
- APCu
- Redis
- 内存缓存
如果我论坛的第一页每秒收到 100 个获取请求和 10 个新帖子,则缓存将每秒更新 10 次,同时每秒被请求 100 次。
哪种解决方案最适合这种经常更新的缓存?
【问题讨论】:
-
问题是为什么要避免 DB 调用。您将不得不去服务器,这应该是更新所花费的大部分时间。就设计的简单性而言,您应该只使用服务器。但是,如果它是我的网站,我可能会在每个主题更新时使用 Web 套接字进行更新。这样做的问题是屏幕会跳来跳去。然后,我建议您仅每隔几秒、每 30 秒等更新一次。我怀疑是否需要实时更新。