Хранилище сеансов Magento: Redis против Memcached


Я запускаю Magento EE 1.12.2 (аналогично в CE 1.7.2), где у нас есть Redis для кэширования ( расширение CM_CACHE, Redis v 2.2.12), но мы используем Memcache для хранения сеансов.

Redis не поддерживается из коробки в этих версиях Magento. Поэтому меня здесь беспокоит следующее:

  • Стоит ли тратить время на перенос хранилища сеансов в Redis с точки зрения усилий и повышения скорости?
  • Разве Memcache не так же хорош или, может быть, даже лучше?

В этом проекте у нас есть большие файлы сеансов, так как нам необходимо хранить сторонние XML-файлы в сеансе, поэтому оптимизация чтения и записи сеанса может оказать значительное влияние.

Из local.xml:

<session_save><![CDATA[memcache]]></session_save>

И:

<cache>
    <backend>Cm_Cache_Backend_Redis</backend>
    [...]
</cache>
Author: 7ochem, 2015-03-20

3 answers

Согласно моей концепции, Redis наиболее хорош:

Memcached является бесплатным и открытым исходным кодом, хранилищем ключей и значений в памяти, высокопроизводительной системой кэширования объектов распределенной памяти.

Redis - это сетевое хранилище данных с открытым исходным кодом, хранящееся в памяти и имеющее ключевое значение с дополнительной надежностью.

Из-за

  1. Memcached - это энергозависимое хранилище ключей/значений в памяти. Redis может действовать как один (и выполнять эту работу так же хорошо, как и Memcached)
  2. Это архитектура подходит для более быстрого сохранения данных.
  3. Более быстрая выборка данных
  4. Сохраняемость на диске по умолчанию
  5. Значения размером до 512 МБ (кэширование памяти ограничено 1 МБ на ключ)
  6. Встроенная кластеризация

Redis не поддерживает LRU или любую аналогичную политику для обработки перегрузки Redis не поддерживает CAS (проверка и установка), что полезно для поддержания согласованности кэша - см., Каковы наиболее распространенные источники несоответствия кэша Memcached? (хотя существует множество операция, которая делает это ненужным)

enter image description here

Более подробная информация: Stackoverflow "Memcached vs. Редис?"

Некоторые подробности с поддержкой более быстрых данных Redis: Redis.io

 11
Author: Amit Bera, 2017-05-23 12:37:16

Кэш CM Redis в 1.7.2 не является взломом, Magento просто добавил код по умолчанию до 1.8+, потому что он так хорошо работает и легко реализуется.

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

Memcached также имеет возможность записи на диск, это может быть использовано для сохранения сеансов после перезапуска службы. При записи на диск memcached может выдавать ошибки на вашем сайте, потому что он будет заблокирован на несколько мгновений. Redis справится с этим лучше, как уже показали некоторые другие вопросы в этом стеке.

Поэтому я бы рекомендовал Redis вместо memcached.

 6
Author: Jeroen, 2015-03-29 13:03:08

К сожалению, это не черно-белый ответ. Итак, я расскажу вам о плюсах и минусах:

Кэш памяти:

  • жестко заданный предел данных (не отбрасывайте эту проблему, сеансы администрирования могут легко выйти за его пределы)
  • глохнет при сохранении на диск
  • немного худшая производительность
  • Расширение Magento не имеет защиты от ботов

Повторный ввод:

  • Проблемы с блокировкой в сеансе::чтение в некоторых хранилищах, вызванные одновременным доступом к сессия.
  • Поддержка нескольких баз данных в одном экземпляре, но с некоторыми оговорками.
  • Расширение Magento поддерживает защиту от ботов и поставляется со сценариями миграции
  • Расширение Magento поддерживает алгоритм быстрого сжатия
  • Более активно поддерживаемая база кода

Теперь, если вас интересует только скорость, просто запустите нагрузочный тест. Бесплатная учетная запись на Blazemeter позволяет вам работать с 50 виртуальными пользователями, которых должно быть достаточно, чтобы измерьте различия.

 5
Author: Melvyn, 2016-09-20 14:10:10