【发布时间】:2014-06-03 19:28:34
【问题描述】:
在我的网站上,我使用的是 Apache、MySQL 和 Memcached。
我已经实现了一个系统,用户将在他的feed 页面上看到他的朋友的某些更新。虽然它正在工作,it's slow。当然是!每次加载页面时,都会一次又一次地从 MySQL 中获取数据。因此,我头疼不已,想着用 Memcached 缓存这些数据的正确实现。我想到了以下几点:
- 每次都获取数据(当前)(太慢了)
- 将来自每个用户的更新存储在 Memcached 中的单独键中。然后在加载页面时,从 Memcached 中获取数据,对其进行排序、修剪或任何我想做的事情。
- 单独存储每个用户的提要。但这意味着,当用户发布更新时,他所有朋友的缓存都必须更新,从而导致额外开销。
在第 2 和第 3 中,还会有另一个问题。我不相信 Memcache 的 1mb 对象限制可以存储这么多数据。然后,有几个竞争条件的风险。如果 2 个朋友同时发布更新,导致用户的提要缓存被更新两次怎么办? (当然,如果 Memcached 进程是原子的,这不会成为问题,但我仍然认为这不是正确的做法。)
您对此有何看法?实现我想要的最佳方法是什么?
【问题讨论】:
标签: php mysql caching memcached