我正在用PHP创建一个论坛应用程序。当用户转到论坛的第一页时,他将获得最近更新的25个主题。
我想缓存这25个主题,以便从不调用数据库来获取第一页,这基本上就是它的工作方式:
这样,缓存将始终包含最近更新的25个主题,并且服务器不会向数据库发出请求以获取论坛的第一页。
我已经在线搜索以找到解决方案:
如果我论坛的第一页每秒收到100个get请求和10个新帖子,则高速缓存将每秒更新10次,而每秒被请求100次。
哪种解决方案最适合这种经常更新的缓存?
答案 0 :(得分:0)
每次用户发布主题/创建主题时,缓存都会更新
我会停止这样做。
相反,请为您在首页上显示的列表设置一个过期缓存(具有适合您需要的时间范围;每秒,每10秒,每分钟,每5分钟)。如果有人从500毫秒前没有看到新帖子,那可能就可以了。
该缓存过期后,将使用新列表重新生成。
或者,您可以使用Redis的list functionality via LPUSH将新帖子推送到列表中,并使用LTRIM删除较旧的帖子。您的缓存调用将访问该列表;列表本身永远不会被清除 ,只是添加到其中。