1483 votes

Memcache vs Redis ?

Nous utilisons une web-app Ruby avec serveur Redis pour la mise en cache. Est il y a un point pour tester Memcache plutôt ?

Ce qui me donnera de meilleures performances ? Des avantages ou des inconvénients entre Redis et Memcache ?

Points à considérer :

  • Vitesse de lecture/écriture.
  • Utilisation de la mémoire.
  • E/s disque du dumping.
  • Mise à l’échelle.

Toute information sera appréciée.

2138voto

Carl Zulauf Points 12826

TL;DR: Pour quelque chose de nouveau, l'utilisation de Redis.

Mise à jour 10/9/2014

Aujourd'hui marque le jour de la memcached n'a plus aucun des avantages significatifs sur le redis, tandis que le redis continue à avoir de nombreux avantages distincts par rapport à memcached. Aujourd'hui, redis 3.0, qui comprend le Redis Cluster, est sorti de bêta et entra dans la version Release Candidate. Auparavant, lorsque l'on regarde memcached vs redis, vous pourriez être enclin à choisir memcached en raison de la 3ème partie outils de clustering de disponible. Maintenant redis offre de clustering, et à la différence de memcached soutien est fourni out-of-the-box. Être intégré fournit une solution plus robuste et plus facile à administrer. Combiné avec d'autres haut de la disponibilité des outils dans la boîte comme la réplication et de la Sentinelle (monitoring), redis clairement a la plus convaincante de mise à l'échelle histoire aujourd'hui.

Au jour d'aujourd'hui toutes les caractéristiques principales et la force memcached offre maintenant un sous-ensemble de redis' caractéristiques et points forts. Toute utilisation, vous pouvez utiliser memcached pour le redis peut résoudre de la même manière. Ils sont à la fois la vitesse de l'éclair, alors que la volatilité des caches. Alors que c'est tous que memcached est son seul la pointe de l'redis iceberg.

Memcached est un volatile en mémoire dans le magasin de clé/valeur. Redis peut agir comme un (et de faire ce travail, ainsi que memcached), mais c'est une structure de données du serveur.

La Redis-Ensemble

Voici quelques-unes des fonctionnalités que redis large offre qui memcached ne l'est pas et permet redis pour être utilisé comme un "vrai" magasin de données au lieu de juste un cache.

  • Puissant types de données et de commandes puissantes, à l'effet de levier. Tables de hachage, les Ensembles classés, des Listes, et plus encore.
  • La persistance de disque par défaut.
  • Les Transactions avec le verrouillage optimiste (REGARDER/MULTI/EXEC)
  • Pub/sub. Extrêmement rapide.
  • Des valeurs allant jusqu'à 512 mo (memcached limitée à 1 mo par clé)
  • Script Lua (2.6)
  • Construit en clustering ( 3.0)
  • Extrêmement rapide à tout. Les repères sont souvent contradictoires, mais c'est beaucoup plus clair: lorsqu'il est utilisé comme memcached Redis se situe quelque part entre presque aussi rapide ou peut-être même un peu plus vite. Comme memcached il est souvent lié par le réseau ou bande passante de la mémoire au lieu de PROCESSEUR ou d'autres goulots d'étranglement et sera rarement le coupable lorsque votre application est en train de ralentir.

Le puissant types de données sont particulièrement importantes. Ils permettent redis à fournir un fantastique files d'attente partagées (listes), une excellente solution de messagerie (pub/sub), un bon endroit pour stocker les sessions (hachages), et un endroit incontournable pour le score élevé de suivi (ensembles classés). Ce ne sont que quelques exemples que gratter la surface.

Conclusion

Pour répondre à votre question initiale: La performance et l'utilisation de la mémoire de Redis par rapport à memcache devraient être relativement similaires. Assez proche que pour la plupart des utilisations aucune différence de performances dans les deux sens académique comme ni est susceptible d'être le goulot d'étranglement.

Sauf si vous avez déjà un investissement important dans memcached, redis est la solution la plus évidente. Pour des solutions à la fois des outils permettrait de résoudre, celle qui offre plus de flexibilité pour les nouveaux cas d'utilisation et permet aussi une meilleure out-of-the-box de disponibilité, d'évolutivité et de l'administration: le redis.

Non seulement redis la meilleure option pour les endroits que vous pourriez utiliser memcached, il permet tout de nouveaux types de cas d'utilisation et les modes d'utilisation.

Memcached est un beau morceau de logiciel qui est stable et durci. Si vous avez déjà un investissement important dans memcached, alors vous pouvez rester avec elle. Il existe de nombreux cas d'utilisation où redis est-bonne-comme memcached, mais n'est pas mieux. Évaluer les avantages de redis (le cas échéant) et le comparer avec le coût de la commutation. Faire votre propre détermination, si vous vous déplacez à redis est utile de votre temps.

142voto

SMathew Points 2206

L'utilisation de Redis si

  1. Vous avez besoin de supprimer de manière sélective/expire éléments dans le cache. (Vous avez besoin de cela)

  2. Vous avez besoin de la capacité à interroger les clés d'un type particulier. eq. 'blog1:messages:*', 'blog2:catégories:xyz:messages:*'. oh que oui! c'est très important. Utilisez cette invalider certains types de mise en cache des éléments de manière sélective. Vous pouvez également l'utiliser pour invalider le cache de fragment, cache de la page, seulement AR objets d'un type donné, etc.

  3. La persistance (Vous en aurez besoin, sauf si vous êtes d'accord avec votre cache avoir à se réchauffer après chaque redémarrage. Très essentiel pour les objets que rarement les changer)

Utiliser memcached si

  1. Memcached vous donne headached!
  2. euh... le clustering? meh. si tu vas pas aller aussi loin, l'utilisation de Vernis et Redis pour la mise en cache des fragments et AR Objets.

De mon expérience, j'ai eu beaucoup plus de stabilité avec Redis que Memcached

109voto

W. Andrew Loe III Points 308

Memcached est multithread et rapide.

Redis a beaucoup de fonctionnalités et est très rapide, mais complètement limitée à un seul cœur, car elle repose sur une boucle d’événements.

Nous utilisons tous les deux. Memcached est utilisé pour mettre en cache des objets, principalement en réduisant lire la charge sur les bases de données. Redis est utilisé pour des choses comme trier les ensembles qui sont pratiques pour enrouler les séries chronologiques.

46voto

Erik Petersen Points 1256

Memcached est bonne à être un simple clé/valeur magasin et bon pour faire des clés => STRING. Il est vraiment bon pour le stockage de session.

Redis est bons pour faire des clés => SOME_OBJECT.

Cela dépend vraiment de ce que vous allez mettre il. Ma compréhension est que, en termes de performances qu’ils sont assez même.

Bonne chance pour trouver de tout critère de référence objective, si vous ne trouvez pas certains de bien vouloir leur envoyer mon chemin.

37voto

Paul Smith Points 1064

Si vous n'avez pas l'esprit une crasse style d'écriture, Redis vs Memcached sur le Systoilet blog est intéressant à lire à partir d'un point de vue de l'utilisabilité, mais assurez-vous de lire les back & forth dans les commentaires avant de tirer des conclusions sur les performances, il ya quelques problèmes méthodologiques (single-threaded occupé de la boucle de tests), et Redis a fait quelques progrès depuis que l'article a été écrit ainsi.

Et pas de lien de référence est complète sans les confondre un peu les choses, donc vérifiez également des conflits d'indicateurs de référence au Dormondo de LiveJournal et la Antirez Blog.

Edit -- comme Antirez points, le Systoilet analyse est plutôt mal conçu. Même au-delà de la simple enfilage de manque à gagner, une grande partie de la performance disparité de ces critères peut être attribuée au client les bibliothèques plutôt que le débit du serveur. Les critères de référence à l'Antirez Blog ne sont en effet bien plus des pommes avec des pommes (avec la même bouche), de la comparaison.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X