Memcached est souvent utilisé pour augmenter la per­for­mance d’ap­pli­ca­tions dy­na­miques avec une base de données connectée. Cette base de données In-Memory permet notamment d’éviter un accès au disque dur pour consulter les données dans la mémoire vive. Ceci permet non seulement de décharger les systèmes en back-end, mais aussi de réduire no­ta­ble­ment le délai de latence. De célèbres sites Internet comme YouTube, Facebook, Twitter et Wikipédia utilisent les avantages de cette solution open source depuis longtemps et offrent ainsi aux in­ter­nautes une ex­pé­rience de na­vi­ga­tion améliorée. Mais comment fonc­tionne pré­ci­sé­ment Memcached et comment démarrer avec cette solution ? Vous ap­pren­drez tout ce qu’il vous faut savoir sur ce système de mise en cache apprécié dans cet article.

Qu’est-ce que Memcached ?

Le nom Memcached fait référence à un système de mise en cache hautement per­for­mant développé il y a près de vingt ans par la société Danga In­te­rac­tive pour le portail en ligne Li­ve­Jour­nal. Ce serveur cache a vu le jour dans le but d’éviter la lenteur de l’accès aux bases de données lors de l’uti­li­sa­tion d’ap­pli­ca­tions Web exi­geantes. La solution consiste à utiliser une base de données en mémoire per­met­tant de mettre les éléments en­re­gis­trés dans la mémoire vive à dis­po­si­tion des uti­li­sa­teurs du site Internet en un temps record. Le logiciel Memcached est ainsi très convivial et offre une ins­tal­la­tion, une structure et une ma­ni­pu­la­tion simples. Il est proposé sous licence BSD de sorte qu’il peut être utilisé, modifié ou copié librement.

À quoi ressemble l’ar­chi­tec­ture de Memcached ?

La structure générale de l’ar­chi­tec­ture de Memcached est re­la­ti­ve­ment simple. Elle rappelle un système de base de données partagée et se compose de l’ap­pli­ca­tion, d’une bi­blio­thèque client et d’un pool d’instances Memcached. Le nombre souhaité d’instances doit être installé sur la mémoire prin­ci­pale d’un serveur. Il est pré­fé­rable d’activer une instance sur chaque serveur pouvant se passer d’une mémoire. Ensemble, ces instances ac­quiè­rent l’espace libre dis­po­nible pour le cache. La bi­blio­thèque client constitue l’interface entre l’ap­pli­ca­tion cor­res­pon­dante et Memcached. Elle stocke les données à en­re­gis­trer et les dépose sur un serveur existant. Grâce à son ar­chi­tec­ture mul­ti­thread, Memcached peut d’autre part utiliser plusieurs processus clés en même temps.

Note

Outre Memcached, Redis est une autre base de données In-Memory appréciée. Alors que Memcached se distingue par sa sim­pli­cité, Redis offre une multitude de pos­si­bi­li­tés d’ap­pli­ca­tion et de fonc­tion­na­li­tés. Dans notre com­pa­ra­tif direct Memcached vs Redis, vous pourrez découvrir quel logiciel convient le mieux à vos objectifs.

Comment fonc­tionne Memcached ?

Les bases de données tra­di­tion­nelles en­re­gistrent les données sur un disque dur, de pré­fé­rence sur un Solid-State-Disk (SSD). En revanche, dans le cas de Memcached, les données restent dans la mémoire de sorte qu’elles sont dis­po­nibles en l’espace de quelques mi­cro­se­condes, ce qui permet d’éliminer le retard causé par le délai lié à la con­sul­ta­tion des données. Bien qu’il soit possible d’en­re­gis­trer les données pendant une période plus longue, la plupart des données sont sup­pri­mées au­to­ma­ti­que­ment après un certain temps. Ceci est lié au fait que Memcached est un cache à pro­pre­ment parler, et non une base de données au sens classique du terme. Les données les moins utilisées sont donc sup­pri­mées dès qu’il n’y a plus d’espace pour de nouveaux éléments. Mais comment se déroule le processus d’en­re­gis­tre­ment pré­ci­sé­ment ?

Dans le cas de Memcached, on parle également de base de données In-Mémory dans un format clé/valeur. Une connexion est tout d’abord établie avec le serveur à l’aide des pro­to­coles TCP et Ip. Si un uti­li­sa­teur souhaite consulter certaines données, Memcached vérifie si ces données se trouvent dans le cache. Dans le cas contraire, les données né­ces­saires sont ré­cu­pé­rées dans la mémoire prin­ci­pale. Le client adjoint ensuite aux données con­cer­nées une valeur clé ou ces données sont sé­ria­li­sées par la bi­blio­thèque du programme. À l’aide d’un al­go­rithme de hachage, le client sé­lec­tionne alors le serveur sur lequel les données sont en­re­gis­trées sous la forme de séquences de ca­rac­tères. Voici les cinq points prin­ci­paux ca­rac­té­ri­sant Memcached :

  • les données sont uni­que­ment trans­mises à un serveur ;
  • les données sont en­re­gis­trées sous la forme de paires clé/valeur ;
  • les dif­fé­rents serveurs ne partagent pas de données entre eux ;
  • les serveurs en­re­gistrent uni­que­ment dans la mémoire vive ;
  • en cas d’espace in­suf­fi­sant, le serveur supprime les données les plus anciennes.

Quels sont les avantages et les in­con­vé­nients de Memcached ?

L’adé­qua­tion de Memcached comme solution de mise en cache dépend des exigences et de la com­plexité de l’ap­pli­ca­tion cor­res­pon­dante. Ce système de mémoire tem­po­raire est tout par­ti­cu­liè­re­ment pertinent pour les ap­pli­ca­tions Web avec un trafic élevé et les sites accédant à d’immenses quantités de données. Outre ses nombreux avantages, il comporte également quelques in­con­vé­nients. Voici un aperçu des avantages et des in­con­vé­nients :

Avantages In­con­vé­nients
Des temps de réaction ex­trê­me­ment courts grâce à un en­re­gis­tre­ment de la valeur In-Memory En­re­gistre uni­que­ment les données de façon tem­po­raire et les perd en cas de panne d’une instance Memcached
L’ar­chi­tec­ture mul­ti­thread permet une évo­lu­ti­vité verticale de la capacité de calcul Les données ne peuvent pas être con­sul­tées, ce qui complique le débogage
Une solution open source so­phis­ti­quée avec une mémoire de données ouverte La longueur de la clé de la valeur est limitée à 250 ca­rac­tères (1 Mo)
Offre une ma­ni­pu­la­tion simple et une flexi­bi­lité dans le dé­ve­lop­pe­ment de l’ap­pli­ca­tion Le manque de mé­ca­nismes de sécurité impose des pare-feu sup­plé­men­taires
Supporte les formats de données ouverts et la plupart des clients et des langages de pro­gram­ma­tion courants Non redondant, par con­sé­quent aucune sécurité contre les pannes par une re­don­dance ou une sau­ve­garde des données

Dans quels cas Memcached est-il utilisé ?

Les champs d’ap­pli­ca­tion de Memcached incluent la mise en cache et l’en­re­gis­tre­ment des données de session. S’agissant de la mise en cache, les éléments en­re­gis­trés tem­po­rai­re­ment comme les fichiers, les mé­ta­don­nées et les images sont mis à dis­po­si­tion en un temps record. Cela améliore la per­for­mance de l’ap­pli­ca­tion concernée et permet une évo­lu­ti­vité à bas coût si la charge venait à augmenter. Les dé­ve­lop­peurs utilisent également la mémoire In-Memory pour gérer les données de session telles que les profils d’uti­li­sa­teurs ou les statuts de session au niveau d’Internet. Toutefois, cela suppose que la per­sis­tance des données ne soit pas un critère important. Dans la plupart des cas, Memcached est une solution idéale lorsque les ap­pli­ca­tions né­ces­si­tent un cache hautement per­for­mant et à grande échelle.

Premiers pas avec Memcached

Les prin­ci­paux atouts de Memcached sont sans aucun doute sa rapidité, son évo­lu­ti­vité et le fait qu’il supporte toutes les API et tous les langages courants. Parmi ces derniers, on compte notamment Ruby, Java, Ja­vaS­cript, Python, Go, PHP, C, C++, C# et Node.js. D’autre part, l’ins­tal­la­tion sur un système d’ex­ploi­ta­tion Windows ou Unix n’est pas par­ti­cu­liè­re­ment com­pli­quée. Le Daemon Memcached de Danga In­te­rac­tive est mis à dis­po­si­tion en té­lé­char­ge­ment gratuit. En dehors du pack dé­ve­lop­peur adapté, vous aurez également besoin d’une bi­blio­thèque libevent per­met­tant une no­ti­fi­ca­tion asyn­chrone des évé­ne­ments. Selon le langage de pro­gram­ma­tion utilisé, vous dis­po­se­rez de dif­fé­rentes pos­si­bi­li­tés de con­fi­gu­ra­tion pour le client et le serveur après l’ins­tal­la­tion.

Comme il s’agit d’un projet open source, il est utilisé et partagé par une vaste com­mu­nauté depuis de nom­breuses années. Grâce à cela, vous trouverez en ligne des in­for­ma­tions dé­tail­lées con­cer­nant l’ap­pli­ca­tion, la gestion et la ré­so­lu­tion des problèmes pour dif­fé­rentes API et dif­fé­rents systèmes d’ex­ploi­ta­tion.

Aller au menu principal