L’uti­li­sa­tion de bases de données In-Memory comme Memcached et Redis permet d’augmenter con­si­dé­ra­ble­ment la per­for­mance des ap­pli­ca­tions dy­na­miques et exi­geantes dans le cadre de la connexion à la base de données. Ces deux solutions open source fonc­tion­nent selon un principe similaire. Cependant, en ce qui concerne les fonc­tion­na­li­tés et les domaines d’ap­pli­ca­tions, il existe un certain nombre de dif­fé­rences entre ces deux systèmes de cache qu’il convient de connaître au préalable.

Alors que Memcached est prin­ci­pa­le­ment axé sur la sim­pli­cité, Redis offre une palette complète de fonc­tion­na­li­tés qui peuvent se révéler per­ti­nentes ou su­per­flues selon le cas d’ap­pli­ca­tion. Découvrez ici ce que ces deux mémoires de données ont en commun et en quoi elles diffèrent.

Brève pré­sen­ta­tion de Memcached et Redis

Alors que Memcached est déjà utilisé depuis près de 20 ans, Redis a fait son ap­pa­ri­tion sur le marché près de sept ans plus tard. À l’époque, les dé­ve­lop­peurs de Memcached ont cherché à éviter la lenteur des accès aux bases de données né­ces­saires à l’uti­li­sa­tion d’ap­pli­ca­tions Web exi­geantes. Une réussite puisque ce « In-Memory-Cache-Service » (abrégé en Memcached) met à dis­po­si­tion les éléments en­re­gis­trés de façon tem­po­raire 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, con­ca­té­na­tion de « Remote Dic­tio­nary Server », est struc­tu­rée selon une ar­chi­tec­ture 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é per­met­tant ainsi des temps de réaction de l’ordre de la mil­li­se­conde. D’un point de vue syn­taxique, l’uti­li­sa­tion de ces deux systèmes est simple et ne nécessite pas de code complexe pour les intégrer dans une ap­pli­ca­tion. Par ailleurs, Memcached et Redis per­met­tent une ré­par­ti­tion des données sur plusieurs nœuds ce qui facilite l’évo­lu­ti­vité verticale dans l'éven­tua­lité où le volume de données viendrait à augmenter. Ces deux solutions open source sup­por­tent d’autre part une profusion de pro­to­coles et de langages de pro­gram­ma­tion tels que Java, Python, PHP, C, C++, C#, Ja­vaS­cript, Node.js, Ruby, Go.

Memcached vs Redis : quelles dif­fé­rences ?

Bien que Memcached et Redis aient de nombreux points communs, ils se dis­tin­guent également en plusieurs points. Nous avons listé pour vous les prin­ci­pales dif­fé­rences.

Ar­chi­tec­ture : Memcached fonc­tionne selon le principe mul­ti­thread et peut utiliser plusieurs cœurs de processus en même temps. Redis n’utilise qu’un seul cœur et fournit par con­sé­quent une meilleure per­for­mance avec de petits volumes de données. Lorsqu’il s’agit d’en­re­gis­trer d’immenses quantités de données, Memcached reste toutefois en tête.

Types de données : Memcached peut uni­que­ment traiter les chaînes de ca­rac­tères ou les strings simples d’une taille maximale de 1 Mo. À contrario, Redis supporte des chaînes de ca­rac­tères pouvant aller jusqu’à 512 Mo, ainsi que les struc­tures de données plus complexes telles que les listes, les hashes, les streams, les sets, les sorted sets, les bitmaps et les Hy­per­Lo­gLogs. En outre, Redis est capable de mesurer et d’en­re­gis­trer des données géo­gra­phiques.

Per­sis­tance 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 au­to­ma­ti­que­ment sup­pri­mées. Ces données sont également perdues si une instance Memcached tombe en panne. Dans le cas de Redis, les données sont ré­cu­pé­rées à l’aide de la fonc­tion­na­lité snapshot « Point-In-Time » ou du mode AOF (Append Only File). Ce mode peut toutefois entraîner une per­for­mance lé­gè­re­ment ralentie.

Gestion de clusters : dans le cas de Redis, la ré­par­ti­tion 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.

Tran­sac­tions : 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. Con­trai­re­ment à Memcached, Redis permet d’exécuter des ordres groupés sous la forme de processus atomiques isolés. Cette fonc­tion­na­lité de Redis s’appelle « pi­pe­li­ning » et veille à ce que Redis puisse apporter une réponse si­mul­ta­née à plusieurs commandes.

Pub/Sub : Redis supporte l’ar­chi­tec­ture Pub/Sub. Ce modèle de « messaging » permet aux ap­pli­ca­tions de com­mu­ni­quer ef­fi­ca­ce­ment entre elles. Cette fonc­tion­na­lité est utilisée dans les chatrooms à haute per­for­mance, dans la com­mu­ni­ca­tion live-stream, dans les feeds des réseaux sociaux et dans la com­mu­ni­ca­tion entre les dif­fé­rents serveurs.

Scripting Lua : lorsque Redis doit exécuter des calculs complexes, les dé­ve­lop­peurs ont la pos­si­bi­lité d’utiliser le scripting Lua. Ce script léger permet d’intégrer une nouvelle logique sans grand effort aug­men­tant ainsi la per­for­mance tout en sim­pli­fiant l’ap­pli­ca­tion.

Memcached vs Redis : com­pa­ra­tif en bref

Memcached Redis
Ins­tal­la­tion et uti­li­sa­tion faciles Ins­tal­la­tion et uti­li­sa­tion faciles
Temps de latence de l’ordre de la mil­li­se­conde Temps de latence de l’ordre de la mil­li­se­conde
Open source et com­pa­tible avec les langages de pro­gram­ma­tion courants Open source et com­pa­tible avec les langages de pro­gram­ma­tion courants
Moteur mul­ti­thread idéal pour les gros volumes de données Moteur single-thread idéal pour les petits volumes de données
Évo­lu­ti­vité verticale Évo­lu­ti­vité verticale et ho­ri­zon­tale (cf. gestion de clusters)
Longueur de la clé limitée à 250 ca­rac­tères (1 Mo) Supporte de nombreux types de données (jusqu’à 512 Mo)
Aucune per­sis­tance des données ou sécurité contre les pannes puisqu’il s’agit d’un stockage In-Memory pur Res­tau­ra­tion des données par snapshot, mode AOF et l’en­re­gis­tre­ment sur des disques durs de sau­ve­garde
Idéal pour la mise en cache et l’en­re­gis­tre­ment 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 so­phis­ti­quées qui se dis­tin­guent prin­ci­pa­le­ment dans les formats de données supportés, dans la gestion de clusters, dans la gestion de la mémoire et dans la per­sis­tance des données. L’adé­qua­tion de tel ou tel moteur dépendra du cas d’ap­pli­ca­tion. Si vous utilisez déjà Memcached et si n’avez pas besoin de fonc­tion­na­li­tés sup­plé­men­taires, passer à Redis n’est pas in­dis­pen­sable. Toutefois, si vous avez besoin de plus de fonc­tion­na­li­tés et souhaitez mieux sau­ve­gar­der les données, Redis constitue une bonne al­ter­na­tive.

Aller au menu principal