Memcached : explication simple de cette base de données In-Memory

Memcached est souvent utilisé pour augmenter la performance d’applications dynamiques 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 notablement 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 internautes une expérience de navigation améliorée. Mais comment fonctionne précisément Memcached et comment démarrer avec cette solution ? Vous apprendrez 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 performant développé il y a près de vingt ans par la société Danga Interactive pour le portail en ligne LiveJournal. 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’utilisation d’applications Web exigeantes. La solution consiste à utiliser une base de données en mémoire permettant de mettre les éléments enregistrés dans la mémoire vive à disposition des utilisateurs du site Internet en un temps record. Le logiciel Memcached est ainsi très convivial et offre une installation, une structure et une manipulation simples. Il est proposé sous licence BSD de sorte qu’il peut être utilisé, modifié ou copié librement.

À quoi ressemble l’architecture de Memcached ?

La structure générale de l’architecture de Memcached est relativement simple. Elle rappelle un système de base de données partagée et se compose de l’application, d’une bibliothèque client et d’un pool d’instances Memcached. Le nombre souhaité d’instances doit être installé sur la mémoire principale 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 acquièrent l’espace libre disponible pour le cache. La bibliothèque client constitue l’interface entre l’application correspondante et Memcached. Elle stocke les données à enregistrer et les dépose sur un serveur existant. Grâce à son architecture multithread, 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 simplicité, Redis offre une multitude de possibilités d’application et de fonctionnalités. Dans notre comparatif direct Memcached vs Redis, vous pourrez découvrir quel logiciel convient le mieux à vos objectifs.

Comment fonctionne Memcached ?

Les bases de données traditionnelles enregistrent 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 disponibles en l’espace de quelques microsecondes, ce qui permet d’éliminer le retard causé par le délai lié à la consultation des données. Bien qu’il soit possible d’enregistrer les données pendant une période plus longue, la plupart des données sont supprimées automatiquement après un certain temps. Ceci est lié au fait que Memcached est un cache à proprement parler, et non une base de données au sens classique du terme. Les données les moins utilisées sont donc supprimées dès qu’il n’y a plus d’espace pour de nouveaux éléments. Mais comment se déroule le processus d’enregistrement précisé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 protocoles TCP et Ip. Si un utilisateur 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écessaires sont récupérées dans la mémoire principale. Le client adjoint ensuite aux données concernées une valeur clé ou ces données sont sérialisées par la bibliothèque du programme. À l’aide d’un algorithme de hachage, le client sélectionne alors le serveur sur lequel les données sont enregistrées sous la forme de séquences de caractères. Voici les cinq points principaux caractérisant Memcached :

  • les données sont uniquement transmises à un serveur ;
  • les données sont enregistrées sous la forme de paires clé/valeur ;
  • les différents serveurs ne partagent pas de données entre eux ;
  • les serveurs enregistrent uniquement dans la mémoire vive ;
  • en cas d’espace insuffisant, le serveur supprime les données les plus anciennes.

Quels sont les avantages et les inconvénients de Memcached ?

L’adéquation de Memcached comme solution de mise en cache dépend des exigences et de la complexité de l’application correspondante. Ce système de mémoire temporaire est tout particulièrement pertinent pour les applications 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 inconvénients. Voici un aperçu des avantages et des inconvénients :

Avantages Inconvénients
Des temps de réaction extrêmement courts grâce à un enregistrement de la valeur In-Memory Enregistre uniquement les données de façon temporaire et les perd en cas de panne d’une instance Memcached
L’architecture multithread permet une évolutivité verticale de la capacité de calcul Les données ne peuvent pas être consultées, ce qui complique le débogage
Une solution open source sophistiquée avec une mémoire de données ouverte La longueur de la clé de la valeur est limitée à 250 caractères (1 Mo)
Offre une manipulation simple et une flexibilité dans le développement de l’application Le manque de mécanismes de sécurité impose des pare-feu supplémentaires
Supporte les formats de données ouverts et la plupart des clients et des langages de programmation courants Non redondant, par conséquent aucune sécurité contre les pannes par une redondance ou une sauvegarde des données

Dans quels cas Memcached est-il utilisé ?

Les champs d’application de Memcached incluent la mise en cache et l’enregistrement des données de session. S’agissant de la mise en cache, les éléments enregistrés temporairement comme les fichiers, les métadonnées et les images sont mis à disposition en un temps record. Cela améliore la performance de l’application concernée et permet une évolutivité à bas coût si la charge venait à augmenter. Les développeurs utilisent également la mémoire In-Memory pour gérer les données de session telles que les profils d’utilisateurs ou les statuts de session au niveau d’Internet. Toutefois, cela suppose que la persistance des données ne soit pas un critère important. Dans la plupart des cas, Memcached est une solution idéale lorsque les applications nécessitent un cache hautement performant et à grande échelle.

Premiers pas avec Memcached

Les principaux atouts de Memcached sont sans aucun doute sa rapidité, son évolutivité et le fait qu’il supporte toutes les API et tous les langages courants. Parmi ces derniers, on compte notamment Ruby, Java, JavaScript, Python, Go, PHP, C, C++, C# et Node.js. D’autre part, l’installation sur un système d’exploitation Windows ou Unix n’est pas particulièrement compliquée. Le Daemon Memcached de Danga Interactive est mis à disposition en téléchargement gratuit. En dehors du pack développeur adapté, vous aurez également besoin d’une bibliothèque libevent permettant une notification asynchrone des événements. Selon le langage de programmation utilisé, vous disposerez de différentes possibilités de configuration pour le client et le serveur après l’installation.

Comme il s’agit d’un projet open source, il est utilisé et partagé par une vaste communauté depuis de nombreuses années. Grâce à cela, vous trouverez en ligne des informations détaillées concernant l’application, la gestion et la résolution des problèmes pour différentes API et différents systèmes d’exploitation.