Портирование результатов SQL в memcached - PullRequest
0 голосов
/ 26 сентября 2010

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

Записи не часто вставляются / обновляются, я думал зашифровать идентификаторы в 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, который показывает, как эти задачи могут быть выполнены?

1 Ответ

2 голосов
/ 26 сентября 2010

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

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

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

Надеюсь, это поможет вам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...