Название этого вопроса может сбивать с толку, но проблема проста.
Я использую Zend_Cache с memcached в качестве бэкэнда.У меня есть два модуля под названием «Последние статьи» и «Популярные статьи».Оба эти модуля находятся на каждой странице и используют похожий запрос, например:
Select * from table where status = 'published' and category = '' order by dateCreated|/popularity\
Моя таблица пока имеет 1,5 миллиона строк.У меня есть индексы для каждого поля, которое я использую в предыдущем запросе.Я кеширую последние статьи за 1 час и популярные за 4 часа.У меня есть 4 веб-сервера (php5 / apache2) и 1 сервер базы данных (mysql).Ядром таблицы является innoDB.
Проблема, когда мой кэш истекает прямо в середине большой нагрузки, из-за чего мой веб-сайт становится недоступным до тех пор, пока эти модули не будут снова кэшированы.У меня мог бы быть новый сервер MYSQL.
Но есть ли способ сделать кеширование более разумным способом?Как, например, server1 будет пытаться обновить кэш, в то время как серверы 2,3 и 4 будут по-прежнему использовать одно и то же значение из кэша.
Я могу написать некоторый код для этого, но мне было интересно, есть лиэто способ сделать это напрямую с Zend_Cache?Если есть шаблон проектирования, который я мог бы применить к моей проблеме?
[ПРАВИТЬ] Я хочу что-то, что я мог бы масштабировать до 100 серверов