在这种情况下,我实现缓存的选择是什么?

时间:2014-06-03 11:24:03

标签: php mysql caching memcached

在我的网站上,我正在使用Apache,MySQL和Memcached。

我已经实施了一个系统,用户可以在他的feed页面上看到他朋友的某些更新。虽然它有效,it's slow。当然如此!每次加载页面时,都会一次又一次地从MySQL中获取数据。所以我正在敲打我的脑袋,想着用Memcached正确实现缓存这些数据。我想到了以下几点:

  1. 每次获取数据(当前)(地狱慢)
  2. 将Memcached中每个用户的更新存储在单独的密钥中。然后在加载页面时,从Memcached获取数据,对其进行排序,修剪它或者我想用它做什么。
  3. 分别存储每个用户的Feed。但这意味着,当用户发布更新时,他的所有朋友的缓存都必须更新,导致额外的负担。
  4. 在第二和第三,还会有另一个问题。我不相信Memcache的对象限制为1mb可以存储这么多数据。然后,种族条件存在一些风险。如果2个朋友同时发布更新,导致用户的Feed缓存更新两次怎么办? (如果Memcached进程是原子的,那么这不会有问题,但是,我认为这不是正确的方法。)

    您对此有何看法?什么是实现我想要的最佳方法?

1 个答案:

答案 0 :(得分:0)

让您登录的客户注册所有朋友频道的听众。如果有人在他的时间轴上添加了一些内容,请检查是否有注册的侦听器。如果是这样,发布到那些客户端(使用队列,推送,等等)。