Comment faire pour exporter toutes les clés et les valeurs de memcached avec python-memcache?
Je souhaiterais exporter toutes les clés et les valeurs à partir d'un serveur memcache, à l'aide de python-memcache.
Il n'y a pas une telle fonction dans ce module. Comment le faire alors?
Peut-être quelque chose de plus compliqué impliquant la "prise" du module serait nécessaire.
OriginalL'auteur Falken | 2011-04-20
Vous devez vous connecter pour publier un commentaire.
Cela vous donnera toutes les clés sur un serveur memcache, vous pouvez utiliser n'importe quel client memcached de la bibliothèque pour obtenir la valeur de chaque touche.
Un collègue est d'arriver à "zéro longueur de nom de champ dans le format" à la ligne "t.write('stats cachedump...". Probablement pour des versions antérieures de Python vous avez besoin de "stats cachedump {0} 200000".
Il travaille pour moi dans le serveur local MAIS en environnement de production, il n'est pas utilisable car il est trop lent (vous pouvez attendre de nombreuses minutes)
OriginalL'auteur lrd
utiliser le memdump et memcat des services publics de la libmemcached suite. Ils ne peuvent pas garantir que vous obtiendrez toutes les données, mais ils sont faciles à utiliser.
Remarque: Sur ubuntu/debian, vous pouvez obtenir ces en intstalling la
libmemcached-tools
paquet et ils sont appelésmemcdump
etmemccat
.vidage de toutes les touches:
vidage de toutes les valeurs:
vous avez toujours de faire correspondre les clés et les valeurs, je vous suggère de dumping, les clés d'un fichier et puis en utilisant comme entrée pour la
memcat
(ce qui assure la cohérence). Alors bien sûr, vous avez besoin de partager les valeurs d'un arrêt complet est le délimiteur je le crois, et puis la paire de clés et de valeurs de manière séquentielle. Il y a probablement un script là, quelque part...ouais, memdump est complètement différent manpages.ubuntu.com/manpages/lucid/man1/memdump.1.html
les gars il suffit d'éditer!
C'est ce que je cherchais - je vous remercie.
OriginalL'auteur scytale
Il n'y a aucun moyen de le faire. Le protocole Memcache ne définit pas de commande pour effectuer une itération sur les touches. Vous devez connaître la clé pour récupérer la valeur.
vrai, mais ça ne veut pas vous donner des informations sur des éléments individuels, juste des statistiques agrégées.
Comme pour "cachedump" il n'est pas garanti pour fonctionner, il est destiné uniquement pour le débogage, le retour est limitée à 1 mo
OriginalL'auteur vartec
Comme mentionné par d'autres, dans de nombreux endroits, dans le cas général, il n'existe aucun moyen de la liste de toutes les clés stockées dans une instance memcached. E. g., Memcached: Liste de toutes les clés, Ne pouvait pas récupérer tous les memcache touches via telnet client
Vous pouvez, toutefois, quelque chose comme le premier 1Meg de touches, ce qui est généralement suffisant pour avoir une idée sur ce que sont stockés dans le serveur memcache au cours du développement. Fondamentalement, vous pouvez avoir deux option pour extraire les éléments de serveur memcache:
(1) Pour extraire un sous-ensemble de clés et de valeurs, vous pouvez la méthode ci-dessus introduit par l'utilisation @lrd
Toutefois, lorsque les données sont très volumineux (par exemple, des millions d'enregistrements), cette méthode peut être très chronophage. De plus, cette méthode ne peut extraire un sous-ensemble de clés & les valeurs.
(2) Dans le cas où vous souhaitez effectuer une itération sur tous les éléments du serveur memcache, l'enregistrement des touches quand on ajoute/set/cas des éléments à memcache serveur est beaucoup moins cher solution. Ensuite, vous pouvez lire le fichier journal pour obtenir toutes les clés et d'obtenir les valeurs de serveur memcache. Comme indiqué dans cette liste de diffusion: Liste de tous les objets dans memcached
OriginalL'auteur Good Will
Le plus simple est d'utiliser python-memcached-logiciels de stats, https://github.com/abstatic/python-memcached-stats
La méthode keys() devrait vous aller.
OriginalL'auteur abhishek_M
En Bash, ce script peut aider:
Au lieu de
memccat
, vous pouvez également vous connecter au port directement et envoyerget SOME-KEY
de commande (exemple en utilisant Netcat:echo "get $key" | nc localhost 11211
).Connexes:
OriginalL'auteur kenorb
Vous êtes à la recherche pour le "flush_all' memcache commande: http://code.google.com/p/memcached/wiki/NewCommands#flush_all
Avec python-memcached, il ressemble à quelque chose comme ceci:
Absolument, mon anglais peut être un peu pauvre, je voulais lui faire "exporter une liste de" 😀
cela ne devrait pas être downvoted - c'est une réponse à la question posée
La question a été corrigé et dit "je voudrais exporter toutes les clés et des valeurs", ce qui a fini par être une réponse erronée et trompeuse dans sa forme actuelle
OriginalL'auteur Paul