Memcached vs Redis : comparatif de ces bases de données In-Memory

L’utilisation de bases de données In-Memory comme Memcached et Redis permet d’augmenter considérablement la performance des applications dynamiques et exigeantes dans le cadre de la connexion à la base de données. Ces deux solutions open source fonctionnent selon un principe similaire. Cependant, en ce qui concerne les fonctionnalités et les domaines d’applications, il existe un certain nombre de différences entre ces deux systèmes de cache qu’il convient de connaître au préalable.

Alors que Memcached est principalement axé sur la simplicité, Redis offre une palette complète de fonctionnalités qui peuvent se révéler pertinentes ou superflues selon le cas d’application. Découvrez ici ce que ces deux mémoires de données ont en commun et en quoi elles diffèrent.

Brève présentation de Memcached et Redis

Alors que Memcached est déjà utilisé depuis près de 20 ans, Redis a fait son apparition sur le marché près de sept ans plus tard. À l’époque, les développeurs de Memcached ont cherché à éviter la lenteur des accès aux bases de données nécessaires à l’utilisation d’applications Web exigeantes. Une réussite puisque ce « In-Memory-Cache-Service » (abrégé en Memcached) met à disposition les éléments enregistrés de façon temporaire en un temps record à l’aide de valeurs clés rendant ainsi superflu l’accès au disque dur. La base de données In-Memory Redis, concaténation de « Remote Dictionary Server », est structurée selon une architecture clés-valeurs similaire et est utilisée, tout comme Memcached, dans les domaines du Web, du gaming et du e-commerce.

Quels sont leurs points communs ?

Grâce au stockage In-Memory de Memcached et Redis, les données sont lues avec une très grande rapidité permettant ainsi des temps de réaction de l’ordre de la milliseconde. D’un point de vue syntaxique, l’utilisation de ces deux systèmes est simple et ne nécessite pas de code complexe pour les intégrer dans une application. Par ailleurs, Memcached et Redis permettent une répartition des données sur plusieurs nœuds ce qui facilite l’évolutivité verticale dans l'éventualité où le volume de données viendrait à augmenter. Ces deux solutions open source supportent d’autre part une profusion de protocoles et de langages de programmation tels que Java, Python, PHP, C, C++, C#, JavaScript, Node.js, Ruby, Go.

Memcached vs Redis : quelles différences ?

Bien que Memcached et Redis aient de nombreux points communs, ils se distinguent également en plusieurs points. Nous avons listé pour vous les principales différences.

Architecture : Memcached fonctionne selon le principe multithread et peut utiliser plusieurs cœurs de processus en même temps. Redis n’utilise qu’un seul cœur et fournit par conséquent une meilleure performance avec de petits volumes de données. Lorsqu’il s’agit d’enregistrer d’immenses quantités de données, Memcached reste toutefois en tête.

Types de données : Memcached peut uniquement traiter les chaînes de caractères ou les strings simples d’une taille maximale de 1 Mo. À contrario, Redis supporte des chaînes de caractères pouvant aller jusqu’à 512 Mo, ainsi que les structures de données plus complexes telles que les listes, les hashes, les streams, les sets, les sorted sets, les bitmaps et les HyperLogLogs. En outre, Redis est capable de mesurer et d’enregistrer des données géographiques.

Persistance des données : Redis n’est pas un système In-Memory pur comme Memcached. Lorsque le serveur Memcached ne dispose plus d’espace pour de nouveaux éléments, les données les moins utilisées sont automatiquement supprimées. Ces données sont également perdues si une instance Memcached tombe en panne. Dans le cas de Redis, les données sont récupérées à l’aide de la fonctionnalité snapshot « Point-In-Time » ou du mode AOF (Append Only File). Ce mode peut toutefois entraîner une performance légèrement ralentie.

Gestion de clusters : dans le cas de Redis, la répartition des données est non seulement effectuée côté client, à l’instar de Memcached, mais aussi côté serveur. Les nœuds du cluster Redis peuvent échanger des données entre eux. Si l’un des sous-ensembles de nœuds tombe en panne, cela n’aura pas ou peu d’impact sur les temps de réaction. Dans Memcached, en revanche, un échange de données de ce type n’est pas possible.

Transactions : ces deux systèmes In-Memory utilisent des commandes atomiques. Cela signifie que les valeurs saisies sont affichées sans retard sur la page associée côté client. Contrairement à Memcached, Redis permet d’exécuter des ordres groupés sous la forme de processus atomiques isolés. Cette fonctionnalité de Redis s’appelle « pipelining » et veille à ce que Redis puisse apporter une réponse simultanée à plusieurs commandes.

Pub/Sub : Redis supporte l’architecture Pub/Sub. Ce modèle de « messaging » permet aux applications de communiquer efficacement entre elles. Cette fonctionnalité est utilisée dans les chatrooms à haute performance, dans la communication live-stream, dans les feeds des réseaux sociaux et dans la communication entre les différents serveurs.

Scripting Lua : lorsque Redis doit exécuter des calculs complexes, les développeurs ont la possibilité d’utiliser le scripting Lua. Ce script léger permet d’intégrer une nouvelle logique sans grand effort augmentant ainsi la performance tout en simplifiant l’application.

Memcached vs Redis : comparatif en bref

Memcached Redis
Installation et utilisation faciles Installation et utilisation faciles
Temps de latence de l’ordre de la milliseconde Temps de latence de l’ordre de la milliseconde
Open source et compatible avec les langages de programmation courants Open source et compatible avec les langages de programmation courants
Moteur multithread idéal pour les gros volumes de données Moteur single-thread idéal pour les petits volumes de données
Évolutivité verticale Évolutivité verticale et horizontale (cf. gestion de clusters)
Longueur de la clé limitée à 250 caractères (1 Mo) Supporte de nombreux types de données (jusqu’à 512 Mo)
Aucune persistance des données ou sécurité contre les pannes puisqu’il s’agit d’un stockage In-Memory pur Restauration des données par snapshot, mode AOF et l’enregistrement sur des disques durs de sauvegarde
Idéal pour la mise en cache et l’enregistrement de sessions Idéal pour des processus complexes et plusieurs processus devant se dérouler en même temps

En résumé

Memcached et Redis sont des mémoires de données In-Memory sophistiquées qui se distinguent principalement dans les formats de données supportés, dans la gestion de clusters, dans la gestion de la mémoire et dans la persistance des données. L’adéquation de tel ou tel moteur dépendra du cas d’application. Si vous utilisez déjà Memcached et si n’avez pas besoin de fonctionnalités supplémentaires, passer à Redis n’est pas indispensable. Toutefois, si vous avez besoin de plus de fonctionnalités et souhaitez mieux sauvegarder les données, Redis constitue une bonne alternative.