Armazenamento de sessão Magento: Redis vs. Memcached

10

Estou executando um Magento EE 1.12.2 (igualmente no CE 1.7.2), onde temos Redis para cache ( extensão Cm_Cache, Redis v 2.2.12 ), mas usamos o Memcache para armazenamento de sessão.

Redis não é suportado fora da caixa nessas versões do Magento. Então, minha preocupação aqui é:

  • Vale a pena aborrecer o armazenamento de sessões no Redis em termos de esforço versus melhoria de velocidade?
  • Memcache não é tão bom ou talvez até melhor?

Neste projeto, temos grandes arquivos de sessão, pois precisamos armazenar arquivos XML de terceiros na sessão, portanto, a otimização da leitura e gravação da sessão pode ter um impacto considerável.

De local.xml:

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

E:

<cache>
    <backend>Cm_Cache_Backend_Redis</backend>
    [...]
</cache>
7ochem
fonte

Respostas:

11

De acordo com meu conceito, Redis é muito bom:

O Memcached é um sistema de armazenamento em cache de valor-chave na memória, de código aberto e gratuito, de alto desempenho e distribuído.

O Redis é um armazenamento de dados de código-fonte, rede, memória e valor-chave, com durabilidade opcional.

Por causa de

  1. Memcached é um armazenamento volátil de chave / valor na memória. Os Redis podem agir como um (e fazer esse trabalho, bem como o Memcached)
  2. Sua arquitetura é adequada para salvar dados mais rapidamente.
  3. Busca de dados mais rapidamente
  4. Persistência no disco, por padrão
  5. Valores de até 512 MB de tamanho (Memcached limitado a 1 MB por chave)
  6. Cluster incorporado

O Redis não suporta LRU ou qualquer política semelhante para lidar com sobrecarga O Redis não suporta CAS (verificação e configuração), o que é útil para manter a consistência do cache - consulte Quais são as fontes mais comuns de inconsistência no cache do Memcached? (embora exista uma operação SETNX que torne isso desnecessário)

insira a descrição da imagem aqui

Mais detalhes: Stackoverflow "Memcached vs. Redis?"

Alguns detalhes com o suporte de dados mais rápido do Redis: Redis.io

Amit Bera
fonte
Ok, é uma boa comparação e o link fornece muitas informações sobre as diferenças entre os dois. Mas vale a pena tentar quando já estiver usando o Memcache para alterá-lo para Redis?
7ochem 20/03/2015
yes.it só acontece quando você usará redis ... Você usa redis no Magento EE 1.12.2.be
Amit Bera
7ochem, você me deu voto negativo?
Amit Bera
3
Grande contribuição. estava tendo a mesma pergunta. usando redis agora. trabalhando soberbamente em uma loja, mas um pouco menos eficaz em outra. Não deixe de experimentar também a memchache. @AmitBera você pode empilhar memcache + apc ou redis + apc e como seria um local.xml então.
Kay Int Veen
3
"O Redis não oferece suporte a LRU ou qualquer política semelhante para lidar com sobrecarga" - você pode perceber isso , a menos que queira dizer algo diferente. Além disso, como o OP está procurando migrar sessões em vez de armazenar em cache para o Redis, o despejo de sessões é idealmente baseado no tempo e não no tamanho, portanto a LRU não é um bônus.
Melvyn
6

O CM Redis Cache na 1.7.2 não é um hack, o Magento acabou de adicionar o código por padrão ao 1.8+ porque funciona muito bem e é implementado facilmente.

O Redis tem suporte para ter cache e sessão na mesma instância do servidor por causa dos bancos de dados. No memcached, você provavelmente iniciaria várias instâncias do memcached.

O Memcached também tem a possibilidade de gravar em disco, isso pode ser usado para salvar sessões após a reinicialização do serviço. Ao gravar no disco, o memcached pode apresentar erros no seu site porque ele será bloqueado por alguns instantes. O Redis lidará melhor com isso, como algumas outras perguntas nesta pilha já mostradas.

Então, eu recomendaria o Redis sobre o memcached.

Jeroen
fonte
5

Infelizmente, essa não é uma resposta em preto e branco. Então, eu vou lhe dar os prós e contras:

Memcache:

  • limite de dados codificados (não descarte esse problema, as sessões de administrador podem crescer facilmente além dele)
  • trava ao salvar em disco
  • desempenho um pouco pior
  • A extensão Magento não tem defesa de bot

Redis:

  • Problemas de bloqueio na Session :: read em algumas lojas, causados ​​pelo acesso simultâneo à sessão.
  • Suporte para vários bancos de dados em uma instância, mas com algumas ressalvas.
  • A extensão Magento tem suporte para defesa contra bots e vem com scripts de migração
  • A extensão Magento suporta o algoritmo de compressão rápida
  • Base de código mais ativamente mantida

Agora, se a velocidade é sua única preocupação, basta executar um teste de carga. Uma conta gratuita no Blazemeter oferece 50 usuários virtuais para trabalhar, o que deve ser suficiente para medir as diferenças.

Melvyn
fonte