Портирование результатов SQL в memcached

0

У меня есть несколько таблиц, к которым часто обращаются пользователи. Такие же запросы запускаются снова и снова, что вызывает дополнительную нагрузку на сервер.

Записи не вставляются и не обновляются часто, я думал о том, чтобы кэшировать идентификаторы в memcached, а затем извлекать их из базы данных, это уменьшит нагрузку на поиск/сортировку и т.д.

Вот пример

SELECT P.product_id FROM products P, product_category C WHERE P.cat_id=C.cat_id AND C.cat_name='Fashion' AND P.is_product_active=true AND C.is_cat_active=true ORDER BY P.product_date DESC

В приведенном выше запросе будут возвращены все идентификаторы продуктов определенной категории, которые будут импортированы в memcached, а затем остальная часть процесса (т.е. пейджинг) будет смоделирована так же, как и с наборами результатов mysql.

Процесс вставки либо завершит кеширование, либо введет идентификатор продукта в первую строку массива.

Мой вопрос в том, что это практический подход? Как люди обращаются к поисковым запросам, говорят, что если человек ищет продукт, который возвращает 10000 результатов (практически не представляется возможным), они выполняют поиск по всем таблицам времени? Есть ли какой-нибудь хороший пример memcached и mysql, который показывает, как эти задачи могут быть выполнены?

Теги:
memcached

1 ответ

2

вы можете спросить себя, действительно ли вам нужно сделать недействительным кеш при вставке/обновлении продукта.

Обычно для списка продуктов может быть допустим 5-минутный кэш.

Если ваша схема недействительности основана только на времени (новые записи появятся только через 5 минут), вы можете быстро использовать и использовать тэки memcache: просто используйте в качестве ключа memcache md5 строки запроса sql, и сообщите memcache, чтобы сохранить результат выбора в течение 5 минут.

Я надеюсь, что это поможет вам

  • 0
    Я также использовал ИЛИ в качестве альтернативы, это также грязный способ обновить список продуктов, т. Е. Поставить новый продукт выше всех ранее сохраненных идентификаторов, это спасет от запроса базы данных.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню