这个问题的标题可能令人困惑,但问题很简单。
我使用 Zend_Cache 和 memcached 作为后端。我有两个模块,分别称为“最新文章”和“热门文章”。这两个模块都在每个页面上,并使用类似的查询,例如:
Select * from table where status = 'published' and category = '' order by dateCreated|/popularity\
到目前为止,我的表有 150 万行。我在上一个查询中使用的每个字段都有索引。我将最近的文章缓存 1 小时,将热门文章缓存 4 小时。我有 4 个 Web 服务器(php5/apache2)和 1 个数据库服务器(mysql)。表引擎是 innoDB。
这个问题有时我的缓存在重负载中过期,这使得我的网站不可用,直到这些模块再次被缓存。我可以有一个新的 MYSQL 服务器。
但是有没有办法以更智能的方式处理缓存?例如,服务器 1 将尝试刷新缓存,而服务器 2,3 和 4 仍将使用缓存中的相同值。
我可以编写一些代码来做到这一点,但我想知道是否有办法直接用 Zend_Cache 做到这一点?如果有一种设计模式可以应用于我的问题?
[编辑] 我想要可以扩展到 100 台服务器的东西