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

10

Я использую 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>
7ochem
источник

Ответы:

11

Согласно моей концепции Redis является самым хорошим:

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

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

Из-за

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

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

введите описание изображения здесь

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

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

Амит Бера
источник
Хорошо, это хорошее сравнение, и ссылка дает много информации о различиях между ними. Но стоит ли пытаться использовать Memcache, чтобы изменить его на Redis?
7очев
да. Это только когда вы будете использовать Redis ... Вы используете Redis на Magento EE 1.12.2.be
Амит Бера
7очем, ты дал мне право голоса?
Амит Бера
3
Большой вклад. был тот же вопрос. используя Redis сейчас. отлично работает в одном магазине, но менее эффективно в другом. Обязательно попробуйте memchache. @AmitBera вы можете сложить memcache + apc или redis + apc и как будет выглядеть local.xml тогда.
Kay Int Veen
3
«Redis не поддерживает LRU или какую-либо подобную политику для обработки перегрузки» - вы можете поразить это , если не имеете в виду что-то другое. Кроме того, поскольку OP ищет возможность переноса сеансов вместо кэша в Redis, исключение сеансов в идеале основано на времени, а не на размере, поэтому LRU не является бонусом.
Мелвин
6

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

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

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

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

Йерун
источник
5

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

Memcache:

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

Redis:

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

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

Мелвин
источник