Php 在类似reddit的网站上进行缓存的最佳方法
我们有一个像reddit这样的PHP网站,用户可以投票支持这些故事 我们尝试使用APC、memcached等来创建网站,但我们放弃了。问题是我们想使用缓存机制,但用户可以在站点上随时投票,缓存的数据可能会很旧,让其他访问者感到困惑 让我用一个例子来解释,我们有一个包含100个故事的数组,并在缓存中存储了5分钟。一个用户投票选择了一些故事,因此这些故事的评级发生了变化。当其他用户进入网站时,他/她将看到缓存的数据,因此是旧数据。(如果投票者用户刷新页面,他也会看到故事的旧投票号码。)Php 在类似reddit的网站上进行缓存的最佳方法,php,caching,Php,Caching,我们有一个像reddit这样的PHP网站,用户可以投票支持这些故事 我们尝试使用APC、memcached等来创建网站,但我们放弃了。问题是我们想使用缓存机制,但用户可以在站点上随时投票,缓存的数据可能会很旧,让其他访问者感到困惑 让我用一个例子来解释,我们有一个包含100个故事的数组,并在缓存中存储了5分钟。一个用户投票选择了一些故事,因此这些故事的评级发生了变化。当其他用户进入网站时,他/她将看到缓存的数据,因此是旧数据。(如果投票者用户刷新页面,他也会看到故事的旧投票号码。) 我们无法理解
我们无法理解,我们将非常感谢您提供的任何帮助也许这是您已经考虑过的解决方案,但为什么不缓存所有内容,而是缓存评级呢?相反,只需更新单个数组,其中
i
th位置包含i
th顶部故事的评级。始终将其保存在内存中,并在数据库可用时将评级刷新回数据库
如果您只关心前N个故事是最新的,那么
i
只需要是头版故事数量的大小,这大概是一个非常小的数字,比如50个左右。这是一个在低延迟更新和总体系统/网络负载(也称为性能与成本)之间找到平衡的问题
好吧,reddit不会进行实时低延迟投票传播。如果你投票支持某件事,它不会立即反映在其他客户身上。我的猜测是他们在做某种聚合(如#4),但这只是我的猜测。是的,我们确实考虑过这一点。事实上,这是我们目前得到的唯一解决方案。我提出了这个问题,也许有更好的办法解决我们的问题。你能推荐一种最好的方法来为PHP保存一个数组吗?顺便说一句,非常感谢你的回复