From 98b992d3868bf825a4459d033387349f1ba98081 Mon Sep 17 00:00:00 2001 From: Romain Dessort Date: Tue, 22 May 2012 17:42:48 +0000 Subject: [PATCH] Add memcached.tex (finished). --- support/memcached.tex | 114 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 support/memcached.tex diff --git a/support/memcached.tex b/support/memcached.tex new file mode 100644 index 0000000..bb0120b --- /dev/null +++ b/support/memcached.tex @@ -0,0 +1,114 @@ +% Copyright (c) 2004-2010 Evolix +% Permission is granted to copy, distribute and/or modify this document +% under the terms of the GNU Free Documentation License, Version 1.2 +% or any later version published by the Free Software Foundation; +% with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. +% A copy of the license is included at http://www.gcolpart.com/howto/fdl.html + +\chapter{Memcached} + +Site officiel: \url{http://memcached.org/} + +\section{Présentation} + +Memcached est une base de données de type clé-valeur dont les informations sont +stockées uniquement en mémoire. Le but visé est de fournir un cache aux +applications (web ou non) afin de stocker des résultats de requêtes sur des API +ou base de données dont les appels sont couteux en ressources et temps +d'exécution. + +Le cas d'utilisation typique est sa mise en place dans une infra ayant un +serveur de base de donnée et N serveurs applicatifs. Memcached est fait pour +gérer les accès réseau concurrents, et peux être interrogé par chaque serveur +applicatif. Le premier serveur fait sa requête à la base de données ou API +distante, puis stocke le résultat dans Memcached. Les autres serveurs pourront +alors directement utiliser les données misent en cache dans Memcached, en +bénéficiant d'un accès beaucoup plus rapide. + +Memcached supporte également la mise la répartition de sa base sur plusieurs +serveurs mis en cluster. + +Au contraire de Redis, Memcached ne dispose d'aucun moyen de sauvegarde +sur disque, il n'est donc adapté que pour stocker des données qui peuvent +facilement être regénérées par l'application ou hébergées par un service tiers +(plus lent). + +Memcached est sorti dans sa première version en 2003. Il est écrit en C et +distribué sous la licence libre BSD. + +\section{Installation} + +Le paquet Debian memcached est disponible dans les dépôts officiels et fourni la +version 1.4.5: +\begin{verbatim} +# aptitude install memcached +\end{verbatim} + +\section{Configuration} + +La configuration de Memcached est triviale et se fait dans l'unique fichier +\texttt{/etc/memcached.conf}. + +Voici un exemple de configuration: +\begin{verbatim} +-d +# Mode verbose (pour du debug) +logfile /var/log/memcached.log +# -v +# -vv +# Taille mémoire (en Mo) +-m 64 +# Adresses d'écoute (à supprimer pour ouvrir de partout) +-l 127.0.0.1 +-p 11211 +-u nobody +# Nombre max de connexions +-c 2048 +\end{verbatim} + +Les options importantes sont notamment \texttt{-d} pour que Memcached soit lancé +en mode démon, \texttt{-m} qui indique la taille mémoire à allouer pour la base. +À noter la taille mémoire utilisée par Memcached pourra être légèrement +supérieure à la limite fixée dans la configuration. +On peut également fixer une limite maximum pour le nombre de connexions +concurrente à la base via l'option \texttt{-c} (par défaut, limité à 1024). À +noter que Memcached est capable de gérer un nombre très élevé de connexions, +d'autant plus que chaque connexion ouverte consomme une quantité de mémoire +négligeable, il est donc conseillé de définir une cette limite assez haute. + +Comme pour Redis, on peut également vouloir désactiver l'écoute sur un socket +réseau pour privilégier un socket unix, pour des raisons de sécurité. L'option à +utiliser pour cela est \texttt{-s}, suivi du chemin vers le socket unix. + +\section{Utilisation} + +Voici quelques commandes basiques pour interagir avec la base de données: +\begin{itemize} + \item Connexion au serveur: on utilise \texttt{telnet}: + \begin{verbatim}$ telnet localhost 11211\end{verbatim} + \item Stocke une valeur: + \begin{verbatim}set greeting 1 0 11 +Hello world +STORED\end{verbatim} + Les paramètres passés à \texttt{set} sont, dans l'ordre, la clé, un flag de + contrôle, la durée de vie de l'entrée (elle sera supprimée au-delà), la + taille de la valeur à stocker (en octets), et enfin la valeur (après un + retour à la ligne). + \item Récupérer une valeur: + \begin{verbatim}get greeting +VALUE greeting 1 11 +Hello world +END \end{verbatim} + \item Statistiques sur les entrées stockées: + \begin{verbatim}stats items +STAT items:1:number 1 +STAT items:1:age 1397 +STAT items:1:evicted 0 +STAT items:1:evicted_nonzero 0 +STAT items:1:evicted_time 0 +STAT items:1:outofmemory 0 +STAT items:1:tailrepairs 0 +STAT items:1:reclaimed 0 +END\end{verbatim} +\end{itemize} +