Я бы позволил вашим пользователям решать.
Другими словами, вместо того, чтобы пытаться угадать, что будет работать лучше, я бы переделал ВСЕ запросы к базе данных, чтобы использовать memcached по строкам;
- Может ли memcache ответить на этот запрос?Если это так - верните результаты из кэша.
- Если не 1), извлеките результаты из базы данных и запишите обратно в memcached, чтобы в следующий раз он находился в кэше.
- Убедитесь, что все ваши обновления / вставки/ удаляет недействительными соответствующие ключи кеша.
Теперь, учитывая, что 3) может быть сложным, я бы использовал этот фактор, чтобы выбрать, какие запросы загружать через кеш - если это сложно и / или требует много временичтобы сделать кеш недействительным, не кешируйте эти запросы для начала.
Поскольку memcached автоматически сбросит наименее использованные ключи, когда хранилище достигнет полной емкости, вы можете установить все, чтобы оно никогда не истекло, и просто разрешить доступные ресурсы.определить, что в данный момент находится в кеше.Во многом это будет зависеть от поведения пользователя (какие продукты популярны и т. Д.) И, следовательно, моего первого комментария о том, как позволить пользователям принимать решение.
Стоит также сказать, что вы должны сначала убедиться, что база данных MySQL хорошо настроена, так как это можетчасто будет легче победить.Кэширование запросов, проверка сложных запросов с помощью Explain для настройки ваших индексов и т. Д., Все это может оказать большее влияние.