Comment puis-je obtenir toutes les clés définies dans mes instances Memcached?
J'ai essayé googler, mais je n'ai pas trouvé grand-chose sauf que PHP
prend en charge une getAllKeys
méthode , ce qui signifie qu'il est en fait possible de le faire d'une manière ou d'une autre. Comment puis-je obtenir la même chose dans une session telnet?
J'ai essayé toutes les options liées à la récupération mentionnées dans la feuille de triche Memcached et le résumé de la commande Telnet Memcached , mais aucune d'elles ne fonctionne et je suis incapable de trouver la bonne façon de le faire.
Remarque: Je fais actuellement cela en développement, donc on peut supposer qu'il n'y aura pas de problèmes dus à la définition de nouvelles clés ou à d'autres conditions de course similaires, et le nombre de clés sera également limité.
Réponses:
Trouvé un moyen, grâce au lien ici (avec la discussion de groupe google originale ici )
Tout d'abord,
Telnet
sur votre serveur:Ensuite, listez les éléments pour obtenir les identifiants de dalle:
Le premier chiffre après «items» est l'identifiant de la dalle. Demandez un vidage du cache pour chaque identifiant de dalle, avec une limite pour le nombre maximal de clés à vider:
la source
b
est octets,s
est époque secondeslru_crawler metadump all
qui videra toutes les clés de cache, pas "seulement" le premier 1M .. github.com/memcached/memcached/blobmemdump
Il existe une commande
memcdump
(parfoismemdump
) pour cette (partie delibmemcached-tools
), par exemple:qui renverra toutes les clés.
memcached-tool
Dans la version récente de,
memcached
il existe également unememcached-tool
commande, par exemplequi vide toutes les clés et valeurs.
Voir également:
la source
dump
sous-commande pourmemcached-tool
semble vider le cache :( - pourrait être plus sûr à utiliserdisplay
ou d'stats
abord.libmemcached-tools
, et le binaire de l'outil est appelé memcdump à la place.memcached-tool
il est quelque peu caché dans un répertoire, qui n'est peut-être pas dans un standardPATH
- du moins sur Ubuntu Xenial - ici:/usr/share/memcached/scripts/
Basé sur @mu 無, répondez ici. J'ai écrit un script de vidage de cache.
Le script vide tout le contenu d'un serveur Memcached. Il est testé avec Ubuntu 12.04 et un hôte local memcached, donc votre kilométrage peut varier.
Ce qu'il fait, il parcourt toutes les dalles de cache et imprime 1000 entrées de chacune.
Veuillez noter certaines limites de ce script, c'est-à-dire qu'il peut ne pas évoluer pour un serveur de cache de 5 Go par exemple. Mais c'est utile à des fins de débogage sur une machine locale.
la source
memcached 1.4.21-1.1+deb8u1
j'ai dû envoyer explicitement une commande quit à memcached. J'ai modifié votre commande et fonctionne correctement maintenant:echo -e "stats items\nquit" | nc localhost 11211 | grep -oe ':[0-9]*:' | grep -oe '[0-9]*' | sort | uniq | xargs -L1 -I{} bash -c 'echo -e "stats cachedump {} 1000\nquit" | nc localhost 11211'
Merci de partager ceci! Très utile pour le débogage :)Si vous avez installé PHP et PHP-memcached, vous pouvez exécuter
la source
$c->setOption(Memcached::OPT_BINARY_PROTOCOL, false);
Pour les versions plus récentes de MemcachedFrapper
Pour obtenir la liste des clés dans Bash, procédez comme suit.
Tout d'abord, définissez la fonction wrapper suivante pour la rendre simple à utiliser (copier et coller dans le shell):
Memcached 1.4.31 et supérieur
Vous pouvez utiliser la
lru_crawler metadump all
commande pour vider (la plupart des) métadonnées pour (tous) les éléments dans le cache.Exemple de commande en utilisant la fonction précédemment définie:
Voir: ReleaseNotes1431 .
Memcached 1.4.30 et inférieur
Obtenez la liste des dalles en utilisant la commande de statistiques d'éléments , par exemple:
Pour chaque classe de slub, vous pouvez obtenir la liste des éléments en spécifiant l'ID de slub avec le nombre limite (
0
- illimité):Remarque: vous devez effectuer cette opération pour chaque serveur Memcached.
Pour lister toutes les clés de tous les stubs, voici le one-liner (pour un serveur):
Remarque: la commande ci-dessus peut entraîner de graves problèmes de performances lors de l'accès aux éléments, il n'est donc pas conseillé de l'exécuter en direct.
Remarques:
Source: GH-405 .
En relation:
protocol.txt
fichier docs.la source
Le moyen le plus simple est d'utiliser le package python-memcached-stats, https://github.com/abstatic/python-memcached-stats
La méthode keys () devrait vous permettre de démarrer.
Exemple -
la source
python -m memcached_stats <ip> <port>