Almacenamiento de sesión de Magento: Redis vs. Memcached

10

Estoy ejecutando un Magento EE 1.12.2 (igualmente en CE 1.7.2) donde tenemos Redis para el almacenamiento en caché ( extensión Cm_Cache, Redis v 2.2.12 ), pero usamos Memcache para el almacenamiento de la sesión.

Redis no es compatible de fábrica en estas versiones de Magento. Entonces mi preocupación aquí es:

  • ¿Merece la pena meter el almacenamiento de la sesión en Redis en términos de esfuerzo frente a la mejora de la velocidad?
  • ¿Memcache no es tan bueno o incluso mejor?

En este proyecto tenemos grandes archivos de sesión, ya que necesitamos almacenar archivos XML de terceros en la sesión, por lo que optimizar la lectura y escritura de la sesión puede tener un impacto considerable.

De local.xml:

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

Y:

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

Respuestas:

11

Según mi concepto, Redis es muy bueno:

Memcached es un sistema de almacenamiento en caché de objetos de memoria distribuido de alto rendimiento, de código abierto y gratuito, en memoria de clave-valor almacenado.

Redis es un almacén de datos de valor clave, en red, en memoria y de código abierto con durabilidad opcional.

Porque

  1. Memcached es un almacén de clave / valor en memoria volátil. Redis puede actuar como tal (y hacer ese trabajo tan bien como Memcached)
  2. Su arquitectura es adecuada para guardar datos más rápido.
  3. Recuperación de datos más rápido
  4. Persistencia al disco, por defecto
  5. Valores de hasta 512 MB de tamaño (Memcached limitado a 1 MB por clave)
  6. Construido en agrupamiento

Redis no admite LRU ni ninguna política similar para manejar la sobrecarga. Redis no admite CAS (verificar y configurar), lo cual es útil para mantener la coherencia de la memoria caché. Consulte ¿Cuáles son las fuentes más comunes de inconsistencia de memoria caché de Memcached? (aunque hay una operación SETNX que hace que esto sea innecesario)

ingrese la descripción de la imagen aquí

Más detalles: Stackoverflow "Memcached vs. Redis?"

Algunos detalles con el soporte de datos más rápido de Redis: Redis.io

Amit Bera
fuente
Ok, es una buena comparación y el enlace proporciona mucha información sobre las diferencias entre los dos. ¿Pero realmente vale la pena intentarlo cuando ya usa Memcache para cambiarlo a Redis?
7ochem
sí, solo vale cuando usarás redis ... Usas redis en Magento EE 1.12.2.be
Amit Bera
7ochem, ¿me has votado?
Amit Bera
3
Gran aporte. estaba teniendo la misma pregunta. usando redis ahora. trabajando magníficamente en 1 tienda, pero un poco menos efectivo en otra. asegúrese de probar memchache también. @AmitBera, ¿puede apilar memcache + apc o redis + apc y cómo se vería un local.xml en ese momento?
Kay Int Veen
3
"Redis no es compatible con LRU ni con ninguna política similar para manejar la sobrecarga", es posible que desee eliminar eso , a menos que quiera decir algo diferente. Además, dado que el OP está buscando migrar sesiones en lugar de caché a Redis, el desalojo de sesión es idealmente basado en el tiempo y no en el tamaño, por lo que LRU no es una ventaja.
Melvyn
6

CM Redis Cache en 1.7.2 no es un truco, Magento acaba de agregar el código por defecto a 1.8+ porque funciona muy bien y se implementa fácilmente.

Redis tiene soporte para tener caché y sesión en la misma instancia del servidor debido a las bases de datos. En memcached probablemente iniciaría múltiples instancias de memcached.

Memcached también tiene la posibilidad de escribir en el disco, esto se puede usar para guardar sesiones después de reiniciar el servicio. Al escribir en el disco, memcached puede generar errores en su sitio porque se bloqueará por unos momentos. Redis manejará esto mejor, como ya se muestran algunas otras preguntas sobre esta pila.

Por lo tanto, recomendaría Redis sobre memcached.

Jeroen
fuente
5

Esto desafortunadamente no es una respuesta en blanco y negro. Entonces, te daré los pros y los contras:

Memcache:

  • límite de datos codificado (no descarte este problema, las sesiones de administración pueden crecer fácilmente más allá)
  • se detiene al guardar en el disco
  • rendimiento ligeramente peor
  • La extensión de Magento no tiene defensa de bot

Redis:

  • Problemas de bloqueo en la sesión :: leer en algunas tiendas, causados ​​por el acceso concurrente a la sesión.
  • Soporte para múltiples bases de datos en una instancia, pero con algunas advertencias.
  • La extensión Magento tiene soporte para defenderse de los bots y viene con scripts de migración
  • La extensión Magento es compatible con el algoritmo de compresión ágil
  • Base de código mantenida más activamente

Ahora, si la velocidad es su única preocupación, simplemente ejecute una prueba de carga. Una cuenta gratuita en Blazemeter te permite trabajar con 50 usuarios virtuales, lo que debería ser suficiente para medir las diferencias.

Melvyn
fuente