¿Cómo puedo obtener todas las claves establecidas en mi (s) instancia (s) de memcached?
Intenté buscar en Google, pero no encontré mucho, excepto que PHP
admite un getAllKeys
método , lo que significa que en realidad es posible hacer esto de alguna manera. ¿Cómo puedo obtener lo mismo dentro de una sesión de telnet?
He probado todas las opciones relacionadas con la recuperación mencionadas en la hoja de trucos memcached y el resumen del comando telca Memcached , pero ninguno de ellos funciona y no puedo encontrar la manera correcta de hacerlo.
Nota: Actualmente estoy haciendo esto en desarrollo, por lo que se puede suponer que no habrá problemas debido al establecimiento de nuevas claves u otras condiciones de carrera, y la cantidad de claves también será limitada.
Respuestas:
Encontré una manera, gracias al enlace aquí (con la discusión original del grupo de Google aquí )
Primero,
Telnet
a su servidor:A continuación, enumere los elementos para obtener los identificadores de losa:
El primer número después de 'elementos' es la identificación de losa. Solicite un volcado de caché para cada ID de losa, con un límite para el número máximo de claves para volcar:
fuente
b
son bytes,s
son segundos de tiempo de épocalru_crawler metadump all
que volcará todas las claves de caché, no "solo" el primer 1M .. github.com/memcached/memcached/blob/…memdump
Hay un comando
memcdump
(a vecesmemdump
) para esa (parte delibmemcached-tools
), por ejemplo:que devolverá todas las llaves.
memcached-tool
En la versión reciente de
memcached
hay tambiénmemcached-tool
comando, por ejemploque vuelca todas las claves y valores.
Ver también:
fuente
dump
subcomando paramemcached-tool
parece borrar el caché :( - podría ser más seguro de usardisplay
ostats
primero.libmemcached-tools
, y el binario de la herramienta se llama memcdump.memcached-tool
que está un poco escondida en un directorio, que no puede estar en un nivelPATH
- por lo menos en Ubuntu Xenial - aquí:/usr/share/memcached/scripts/
Base en @mu 無 responde aquí. He escrito un script de volcado de caché.
El script volca todo el contenido de un servidor memcached. Está probado con Ubuntu 12.04 y un host local memcached, por lo que su kilometraje puede variar.
Lo que hace es revisar todas las losas de caché e imprimir 1000 entradas de cada una.
Tenga en cuenta ciertos límites de este script, es decir, no puede escalar para un servidor de caché de 5 GB, por ejemplo. Pero es útil para propósitos de depuración en una máquina local.
fuente
memcached 1.4.21-1.1+deb8u1
tuve que enviar explícitamente un comando de salida a memcached. Modifiqué tu comando a esto y funciona correctamente ahora: ¡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'
Gracias por compartir esto! Bastante útil para la depuración :)Si tiene instalado PHP y PHP-memcached, puede ejecutar
fuente
$c->setOption(Memcached::OPT_BINARY_PROTOCOL, false);
Intento
Para obtener una lista de claves en Bash, siga estos pasos.
Primero, defina la siguiente función de envoltura para que sea fácil de usar (copiar y pegar en el shell):
Memcached 1.4.31 y superior
Puede usar el
lru_crawler metadump all
comando para volcar (la mayoría de) los metadatos de (todos) los elementos en el caché.Comando de ejemplo utilizando la función definida previamente:
Ver: ReleaseNotes1431 .
Memcached 1.4.30 y menos
Obtenga una lista de losas utilizando el comando de estadísticas de elementos , por ejemplo:
Para cada clase de slub, puede obtener una lista de elementos especificando la identificación del slub junto con el número límite (
0
- ilimitado):Nota: debe hacer esto para cada servidor memcached.
Para enumerar todas las claves de todos los apéndices, aquí tiene una línea (por servidor):
Nota: El comando anterior podría causar problemas graves de rendimiento al acceder a los elementos, por lo que no se recomienda ejecutarlo en vivo.
Notas:
Fuente: GH-405 .
Relacionado:
protocol.txt
archivo de documentación.fuente
La forma más fácil es usar el paquete python-memcached-stats, https://github.com/abstatic/python-memcached-stats
El método keys () debería ayudarlo.
Ejemplo
fuente
python -m memcached_stats <ip> <port>