Stockage de session Magento: Redis vs Memcached

10

J'utilise un Magento EE 1.12.2 (également dans CE 1.7.2) où nous avons Redis pour la mise en cache ( extension Cm_Cache, Redis v 2.2.12 ), mais nous utilisons Memcache pour le stockage de session.

Redis n'est pas pris en charge immédiatement sur ces versions de Magento. Donc, ma préoccupation ici est:

  • Vaut-il la peine d'avoir du stockage de session dans Redis en termes d'effort par rapport à l'amélioration de la vitesse?
  • Memcache n'est-il pas aussi bon ou peut-être même meilleur?

Dans ce projet, nous avons de gros fichiers de session car nous devons stocker des fichiers XML tiers dans la session, donc l'optimisation de la lecture et de l'écriture de session peut avoir un impact considérable.

De local.xml:

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

Et:

<cache>
    <backend>Cm_Cache_Backend_Redis</backend>
    [...]
</cache>
7ochem
la source

Réponses:

11

Selon mon concept, Redis est très bon:

Memcached est un système gratuit et open source, un magasin de valeurs-clés en mémoire, un système de mise en cache d'objets de mémoire distribuée hautes performances.

Redis est un magasin de données de valeur-clé en source ouverte, en réseau et en mémoire avec une durabilité en option.

À cause de

  1. Memcached est un magasin de clé / valeur volatile en mémoire. Redis peut agir comme tel (et faire ce travail aussi bien que Memcached)
  2. Son architecture est adaptée pour enregistrer des données plus rapidement.
  3. Récupération plus rapide des données
  4. Persistance sur le disque, par défaut
  5. Valeurs jusqu'à 512 Mo (Memcached limité à 1 Mo par clé)
  6. Cluster intégré

Redis ne prend pas en charge LRU ou toute politique similaire pour gérer la surcharge Redis ne prend pas en charge CAS (vérifier et définir), ce qui est utile pour maintenir la cohérence du cache - voir Quelles sont les sources les plus courantes d'incohérence du cache Memcached? (bien qu'il y ait une opération SETNX qui rend cela inutile)

entrez la description de l'image ici

Plus de détails: Stackoverflow "Memcached vs Redis?"

Quelques détails avec la prise en charge des données plus rapide de Redis: Redis.io

Amit Bera
la source
Ok, c'est une belle comparaison et le lien fournit beaucoup d'informations sur les différences entre les deux. Mais cela vaut-il la peine d'essayer lorsque vous utilisez déjà Memcache pour le changer en Redis?
7ochem
yes.it seulement quand vous utiliserez redis ... Vous utilisez redis sur Magento EE 1.12.2.be
Amit Bera
7ochem, m'avez-vous donné un vote négatif?
Amit Bera
3
Grande contribution. avait la même question. en utilisant redis maintenant. fonctionnant superbement sur 1 magasin, mais un peu moins efficace sur un autre. n'oubliez pas d'essayer memchache aussi. @AmitBera peut vous empiler memcache + apc ou redis + apc et à quoi ressemblerait un fichier local.xml.
Kay Int Veen
3
"Redis ne prend pas en charge LRU ou toute autre politique similaire pour gérer la surcharge" - vous voudrez peut-être supprimer cela , sauf si vous voulez dire quelque chose de différent. De plus, comme l'OP cherche à migrer des sessions au lieu du cache vers Redis, l'expulsion de session est idéalement basée sur le temps et non sur la taille, donc LRU n'est pas un bonus.
Melvyn
6

CM Redis Cache dans 1.7.2 n'est pas un hack, Magento vient d'ajouter le code par défaut à 1.8+ car il fonctionne si bien et est implémenté facilement.

Redis prend en charge le cache et la session dans la même instance de serveur en raison des bases de données. Dans memcached, vous commenceriez probablement plusieurs instances de memcached.

Memcached a également la possibilité d'écrire sur le disque, cela peut être utilisé pour enregistrer des sessions après un redémarrage du service. Lors de l'écriture sur le disque, memcached peut générer des erreurs sur votre site car il se verrouille pendant quelques instants. Redis s'en occupera mieux, comme d'autres questions sur cette pile ont déjà été montrées.

Je recommanderais donc Redis plutôt que memcached.

Jeroen
la source
5

Ce n'est malheureusement pas une réponse en noir et blanc. Donc, je vais vous donner les avantages et les inconvénients:

Memcache:

  • limite de données codées en dur (ne jetez pas ce problème, les sessions d'administration peuvent facilement s'étendre au-delà)
  • se bloque lors de l'enregistrement sur le disque
  • performances légèrement moins bonnes
  • L'extension Magento n'a pas de défense contre les robots

Redis:

  • Problèmes de verrouillage dans Session :: read dans certains magasins, causés par un accès simultané à la session.
  • Prise en charge de plusieurs bases de données dans une seule instance, mais avec quelques mises en garde.
  • L'extension Magento prend en charge la défense contre les bots et est livrée avec des scripts de migration
  • L'extension Magento prend en charge l'algorithme de compression accrocheur
  • Base de code maintenue plus activement

Maintenant, si la vitesse est votre seule préoccupation, exécutez simplement un test de charge. Un compte gratuit chez Blazemeter vous permet de travailler avec 50 utilisateurs virtuels, ce qui devrait être suffisant pour mesurer les différences.

Melvyn
la source