2015-01-15 5 views
0

Я использую memcached прямо сейчас как кеш LRU для кэширования больших данных. Я установил максимальный размер объекта до 128 МБ (я знаю, что это неэффективно и не рекомендуется) и общий memcached до 1 ГБ. Но 128 МБ недостаточно для моих целей, поэтому я планирую перейти к Redis. Пара вопросов:Redis Vs. Memcached

  1. memcached очень медленный - моя текущая конфигурация memcached занимает 3-4 секунды, чтобы вернуть только один запрос. Это очень медленно. Мне иногда приходится составлять до 30 запросов memcached для обслуживания одного пользовательского запроса. И просто это занимает 90 секунд! Я делаю что-то неправильно или memcached на самом деле это медленно?
  2. Redis будет быстрее? - Я планирую использовать списки Redis для кэширования данных. Я получаю полные списки, используя от 0 до -1. Я надеюсь, что Redis будет быстрее, потому что я не могу использовать кеш, если он займет 90 секунд!

Спасибо!

ответ

0

Я бы рекомендовал сделать небольшое профилирование, чтобы увидеть, где узкое место. Моя неосведомленная догадка заключается в том, что с такими большими объектами вы можете быть ограничены связью между вашим сервером приложений и memcached, и таким образом вы увидите похожие результаты с redis. Также может случиться так, что ваше приложение занимает много времени, маршируя и размахивая множеством объектов. Если это легко, возможно, стоит попробовать схему кэширования, в которой вы просто кэшируете запрос, отправляемый клиенту (что, я уверен, намного меньше 128 МБ).

Еще одна вещь, которую нужно попробовать - это включить сжатие. Это даст дополнительную сжатие/сжатие латентности, но уменьшит задержку в сети, если это действительно проблема.

+0

Спасибо, rgbrgb. Я использовал Redis, и приложение работает очень хорошо. Хотя для сохранения данных в Redis и распаковки требуется всего несколько минут. Но в целом я думаю, что это все же улучшение по сравнению с использованием базы данных напрямую без какого-либо слоя кеширования. – huhahihi