web-dev-qa-db-fra.com

Afficher le contenu de memcached

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.

37
Tom

Essayez stats items - c'est à dire.

echo "stats items" | nc 127.0.0.1 11211
10
danlefree

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 .

24
Jagtesh Chadha

outil memcached

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.

memdump

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)

memccat

Pour imprimer une valeur de clé, vous pouvez utiliser la commande memccat, par exemple.

memccat CACHE-KEY

Bash

Pour vider toutes les clés dans Bash Shell, essayez:

exec {memcache}<>/dev/tcp/localhost/11211; printf "stats items\nquit\n" >&${memcache}; cat <&${memcache}

netcat

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

Python

Voir: Comment exporter toutes les clés et valeurs de memcached avec Python?

12
kenorb

Essayez d'utiliser la commande telnet, par exemple:

$ telnet 0 11211
stats
stats items
set key 1 23 8
get key
7
silviud

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.

6
Tobia

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.

2
Chris