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 Redisdoit 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.