Réponses:
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 la commande Understanding Memcached stats cachedump .
Dans la version récente de memcached
il y a aussi un memcached-tool
script perl, par exemple utilisation:
memcached-tool localhost:11211 dump | less
qui décharge toutes les clés et les valeurs.
Pour vider une liste de clés d’un serveur, utilisez memcdump
/ memdump
tool, 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 de clé 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 memccat
commande, par exemple
memccat CACHE-KEY
Pour vider toutes les clés dans le shell Bash, 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?
apt install libmemcached-tools
, mais ensuite ce n'était toujours pas sur mon chemin, donc /usr/share/memcached/scripts/memcached-tool localhost:11211 dump
. Ubuntu 18.
Installez libmemcached-tools
et ensuite 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.
En mémoire de base, je ne pense pas qu’il soit possible d’interroger les clés stockées sur le serveur. La seule chose que vous puissiez obtenir, ce sont les statistiques relatives au stockage et aux éléments stockés.
Certains fournisseurs qui ont développé des solutions compatibles avec memcached, par exemple Gear6 , ont toutefois ajouté une fonctionnalité permettant l'interrogation.