Редис против. Memcached

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

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

Спасибо!


person huhahihi    schedule 15.01.2015    source источник


Ответы (1)


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

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

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