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.
Table des matières
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 :
Commande | Description |
memccat | Afficher des clés memcached |
memccp | Copier un ensemble de fichiers dans un cluster memcached |
memcdump | Vider toutes les valeurs d’un ou plusieurs serveurs |
memcerror | Traduisez un code d’erreur memcached en une chaîne. |
memcexist | Vérifier l’existence d’une clé au sein d’un cluster |
memcflush | Effacer toutes les données d’un serveur de serveurs memcached |
memcparse | Copie les fichiers vers une collection de serveurs memcached |
memcping | Ping un serveur pour voir s’il est vivant |
memcrm | Effacez une clé ou un ensemble de clés d’un cluster memcached. |
memcslap | Génère une charge sur un cluster de serveurs memcached |
memcstat | Afficher l’état d’un cluster memcached |
memctouch | Mettre à jour la valeur d’expiration d’une valeur déjà existante sur le serveur |
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