Vider ou afficher le contenu d’un serveur Memcached en ligne de commandes

Memcached est une base de données d'objet que l'on peut utiliser par exemple pour cacher des données d'applications PHP.
On l'utilise souvent avec un serveur WEB et PHP pour mettre en cache certains éléments.
Or, il arrive parfois que l'on doivent vider le contenu d'un serveur memcached.
Il existe plusieurs méthodes pour afficher ou vider le contenu d'un serveur Memcached en ligne de commandes.

Dans ce tutoriel, je vous montre deux façons de vider le contenu d'un serveur Memcached à l'aide de la ligne de commande.

Vider ou afficher le contenu d'un serveur Memcached en ligne de commandes

Comment vider ou afficher le contenu d'un serveur Memcached en ligne de commande

libmemcached-tools

La première méthode consiste à utiliser la librairie libmemcached-tools qui fournit de nombreuses commandes.

apt install libmemcached-tools

Pour dump toutes les clés :

for key in $(memcdump --server=127.0.0.1);
  do echo -n "KEY :  $key ------> VALUE : ";
  memccat --server=127.0.0.1 $key;
done

Pour vider memcached :

memcflush --servers=127.0.0.1

Le paquet fournit aussi les commandes suivantes :

CommandeDescription
memccatAfficher des clés memcached
memccpCopier un ensemble de fichiers dans un cluster memcached
memcdumpVider toutes les valeurs d'un ou plusieurs serveurs
memcerrorTraduisez un code d'erreur memcached en une chaîne.
memcexistVérifier l'existence d'une clé au sein d'un cluster
memcflushEffacer toutes les données d'un serveur de serveurs memcached
memcparseCopie les fichiers vers une collection de serveurs memcached
memcpingPing un serveur pour voir s'il est vivant
memcrmEffacez une clé ou un ensemble de clés d'un cluster memcached.
memcslapGénère une charge sur un cluster de serveurs memcached
memcstatAfficher l'état d'un cluster memcached
memctouchMettre à jour la valeur d'expiration d'une valeur déjà existante sur le serveur
Les commandes memcached dans un terminal

avec /dev/tcp/

La seconde étape, la plus simple car elle ne nécessite pas l'utilisation d'application est de vider memcached en bash.
Pour cela, on envoie la commande flush_all vers le socket sous la forme d'un fichier /dev.

Pour afficher les clés memcached :

echo stats > /dev/tcp/127.0.0.1/11211

Pour vider la base de données :

echo flush_all > /dev/tcp/127.0.0.1/11211

avec netcat (nc)

netcat n'est pas installé par défaut dans la plupart des distributions Linux.

  • Sur les distributions de type Debian, on peut l'installer avec APT :
apt install netcat
  • Puis on utilise la commande echo que l'on piple vers nc qui va se connecter au serveur memcached :
echo 'stats' | nc localhost 11211 #afficher les clés memcached
echo 'flush_all' | nc localhost 11211 #vider les données memcached
  • Cela doit vous retourner OK

avec telnet

telnet est un ancien protocole permettant d'émuler un terminal à distance.
Il est remplacé par SSH plus sûr dont la session est chiffrée.
Mais on peut utiliser telnet pour communiquer avec memcached

  • On se connecter en telnet :
telnet localhost 11211
  • Cela retourne :
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
  • Puis on saisit la commande flush :
flush_all
  • Enfin une fois terminé, on quitte :
quit

avec find

Enfin pour supprimer le cache memcached, on peut aussi utiliser la commande find.
Voici un exemple, pour vider le cache memcached dans /var/www/.memcached :

find /var/www/.memcached -type f -iname "*" -delete

Tags: