每秒更新多次的php缓存的最佳解决方案

时间:2019-06-13 14:47:15

标签: php caching

我正在用PHP创建一个论坛应用程序。当用户转到论坛的第一页时,他将获得最近更新的25个主题。

我想缓存这25个主题,以便从不调用数据库来获取第一页,这基本上就是它的工作方式:

  • 每次用户发布主题/创建主题时,缓存都会更新
  • 该主题已添加到缓存
  • 最早的更新主题已从缓存中删除

这样,缓存将始终包含最近更新的25个主题,并且服务器不会向数据库发出请求以获取论坛的第一页。

我已经在线搜索以找到解决方案:

  • APCu
  • Redis
  • Memcached

如果我论坛的第一页每秒收到100个get请求和10个新帖子,则高速缓存将每秒更新10次,而每秒被请求100次。

哪种解决方案最适合这种经常更新的缓存?

1 个答案:

答案 0 :(得分:0)

  

每次用户发布主题/创建主题时,缓存都会更新

我会停止这样做。

相反,请为您在首页上显示的列表设置一个过期缓存(具有适合您需要的时间范围;每秒,每10秒,每分钟,每5分钟)。如果有人从500毫秒前没有看到新帖子,那可能就可以了。

该缓存过期后,将使用新列表重新生成。

或者,您可以使用Redis的list functionality via LPUSH将新帖子推送到列表中,并使用LTRIM删除较旧的帖子。您的缓存调用将访问该列表;列表本身永远不会被清除 ,只是添加到其中。