Existe-t-il des outils pour explorer ce qui est actuellement mis en cache dans un pool memcached? Pas beaucoup de graphiques, mais les clés/valeurs réelles actuellement stockées.
Essayez stats items
- c'est à dire.
echo "stats items" | nc 127.0.0.1 11211
La bonne réponse serait echo "stats cachedump SLABS_ID LIMIT" | nc HOSTNAME PORT
par exemple. echo "stats cachedump 15 4" | nc 127.0.0.1 11211
Cela donnerait la sortie sur les lignes de:
ITEM cache_path-comments%2Fpage%2F2 [2211 b; 1337195558 s]
ITEM cache_path-comments%2Fpage%2F5 [2205 b; 1337195558 s]
ITEM cache_path-comments%2Fpage%2F6 [2179 b; 1337195558 s]
ITEM cache_path-comments [2164 b; 1337195558 s]
END
Remarque: Il s'agit d'une commande non documentée qui n'est pas prise en charge par l'équipe memcached et peut être supprimée dans n'importe quelle version. Pour la référence complète, consultez Comprendre la commande Memcached stats cachedump .
Dans la version récente de memcached
, il y a aussi memcached-tool
Script Perl, par exemple usage:
memcached-tool localhost:11211 dump | less
qui vide toutes les clés et valeurs.
Pour vider une liste de clés d'un serveur, utilisez l'outil memcdump
/memdump
, par exemple.
memcdump --servers=localhost
Pour vider tous les objets:
memcdump --servers=localhost | xargs -L1 -I% sh -c 'echo "get %" | nc localhost 11211'
Pour vider toutes les valeurs clés dans des fichiers séparés:
while read -r key; do [ -f "$key" ] || echo "get $key" | nc localhost 11211 > "$key.dump"; done < <(memcdump --server localhost)
Pour imprimer une valeur de clé, vous pouvez utiliser la commande memccat
, par exemple.
memccat CACHE-KEY
Pour vider toutes les clés dans Bash Shell, essayez:
exec {memcache}<>/dev/tcp/localhost/11211; printf "stats items\nquit\n" >&${memcache}; cat <&${memcache}
Voici un exemple pour obtenir la valeur d'un élément unique en utilisant netcat
:
echo "get 13456_-cache-some_object" | nc 127.0.0.1 11211
Voir: Comment exporter toutes les clés et valeurs de memcached avec Python?
Essayez d'utiliser la commande telnet
, par exemple:
$ telnet 0 11211
stats
stats items
set key 1 23 8
get key
Installer libmemcached-tools
puis vous pouvez utiliser cette commande pour obtenir toutes les clés:
memcdump --server=127.0.0.1
Pour voir le contenu, vous pouvez demander une clé spécifique:
memccat --server=127.0.0.1 SOME_KEY
ou vous pouvez parcourir la liste des clés dans Bash:
for key in $(memcdump --server=127.0.0.1); do echo ------ $key ------; memccat --server=127.0.0.1 $key; done
Assurez-vous d'utiliser 127.0.0.1 (si vous exécutez la commande sur le même hôte) car localhost
ne semble pas fonctionner.
Dans memcached de base, je ne pense pas qu'il existe un moyen d'interroger les clés stockées sur le serveur. La seule pensée que vous pouvez obtenir est les statistiques liées au stockage et aux éléments stockés.
Certains fournisseurs qui ont développé des solutions compatibles avec Memcached, par exemple Gear6 , ont cependant ajouté des fonctionnalités pour permettre l'interrogation.