evoformations/support/memcached.tex

115 lines
4.2 KiB
TeX
Raw Permalink Normal View History

2012-05-22 19:42:48 +02:00
% Copyright (c) 2004-2010 Evolix <info@evolix.fr>
% 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<EFBFBD>sentation}
Memcached est une base de donn<6E>es de type cl<63>-valeur dont les informations sont
stock<EFBFBD>es uniquement en m<>moire. Le but vis<69> est de fournir un cache aux
applications (web ou non) afin de stocker des r<>sultats de requ<71>tes sur des API
ou base de donn<6E>es dont les appels sont couteux en ressources et temps
d'ex<65>cution.
Le cas d'utilisation typique est sa mise en place dans une infrastructure ayant un
2012-05-22 19:42:48 +02:00
serveur de base de donn<6E>e et N serveurs applicatifs. Memcached est fait pour
g<EFBFBD>rer les acc<63>s r<>seau concurrents, et peux <20>tre interrog<6F> par chaque serveur
applicatif. Le premier serveur fait sa requ<71>te <20> la base de donn<6E>es ou API
distante, puis stocke le r<>sultat dans Memcached. Les autres serveurs pourront
alors directement utiliser les donn<6E>es mises en cache dans Memcached, en
2012-05-22 19:42:48 +02:00
b<EFBFBD>n<EFBFBD>ficiant d'un acc<63>s beaucoup plus rapide.
Memcached supporte <20>galement la r<>partition de sa base sur plusieurs
2012-05-22 19:42:48 +02:00
serveurs mis en cluster.
Au contraire de Redis, Memcached ne dispose d'aucun moyen de sauvegarde
sur disque, il n'est donc adapt<70> que pour stocker des donn<6E>es qui peuvent
facilement <20>tre reg<65>n<EFBFBD>r<EFBFBD>es par l'application ou h<>berg<72>es par un service tiers
(plus lent).
Memcached est sorti dans sa premi<6D>re version en 2003. Il est <20>crit en C et
distribu<EFBFBD> sous la licence libre BSD.
\section{Installation}
Le paquet Debian memcached est disponible dans les d<>p<EFBFBD>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'<27>coute (<28> 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<6E>
en mode d<>mon, \texttt{-m} qui indique la taille m<>moire <20> allouer pour la base.
<EFBFBD> noter la taille m<>moire utilis<69>e par Memcached pourra <20>tre l<>g<EFBFBD>rement
sup<EFBFBD>rieure <20> la limite fix<69>e dans la configuration.
On peut <20>galement fixer une limite maximum pour le nombre de connexions
concurrentes <20> la base via l'option \texttt{-c} (par d<>faut, limit<69> <20> 1024). <20>
2012-05-22 19:42:48 +02:00
noter que Memcached est capable de g<>rer un nombre tr<74>s <20>lev<65> de connexions,
d'autant plus que chaque connexion ouverte consomme une quantit<69> de m<>moire
n<EFBFBD>gligeable, il est donc conseill<6C> de d<>finir une limite assez haute.
2012-05-22 19:42:48 +02:00
Comme pour Redis, on peut <20>galement vouloir d<>sactiver l'<27>coute sur un socket
r<EFBFBD>seau pour privil<69>gier un socket unix, pour des raisons de s<>curit<69>. L'option <20>
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<6E>es:
\begin{itemize}
\item Connexion au serveur: on utilise \texttt{telnet}:
\begin{verbatim}$ telnet localhost 11211\end{verbatim}
\item Stocker une valeur:
2012-05-22 19:42:48 +02:00
\begin{verbatim}set greeting 1 0 11
Hello world
STORED\end{verbatim}
Les param<61>tres pass<73>s <20> \texttt{set} sont, dans l'ordre, la cl<63>, un flag de
contr<74>le, la dur<75>e de vie de l'entr<74>e (elle sera supprim<69>e au-del<65>), la
taille de la valeur <20> stocker (en octets), et enfin la valeur (apr<70>s un
retour <20> la ligne).
\item R<>cup<75>rer une valeur:
\begin{verbatim}get greeting
VALUE greeting 1 11
Hello world
END \end{verbatim}
\item Statistiques sur les entr<74>es stock<63>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}