keys data check all get memcached key telnet

data - memcached get all keys



obtener todas las claves establecidas en memcached (5)

memdump

Hay un comando memdump para eso ( memcdump en Ubuntu, parte de libmemcached-tools ), por ejemplo:

memdump --servers=localhost

que devolverá todas las claves o en Bash para volcar las estadísticas de todos los elementos, la sintaxis es:

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

Relacionado: Escribir un cliente Redis en puro bash (es Redis, pero enfoque muy similar)

memcached-tool

En la versión más reciente de memcached también hay memcached-tool comando memcached-tool , por ej.

memcached-tool localhost:11211 dump | less

que vuelca todas las claves y valores.

Intento

Para volcar todas las claves en el shell Bash, intente:

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

¿Cómo puedo obtener todas las claves establecidas en mi (s) instancia (s) memcached?

Intenté buscar en Google, pero no encontré mucho, excepto que PHP admite un método getAllKeys , lo que significa que de hecho es posible hacerlo 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 de Memcached y en el resumen del comando de Memnet en telnet , pero ninguna de ellas funciona y no encuentro la forma correcta de hacerlo.

Nota: Actualmente estoy haciendo esto en desarrollo, por lo que se puede suponer que no habrá problemas debido a la configuración de nuevas teclas u otras condiciones de carrera así, y el número de claves también será limitado.


Base en @mu 無 respuesta aquí. He escrito un script de volcado de caché.

El script volca todo el contenido de un servidor memcached. Se probó con Ubuntu 12.04 y un servidor local protegido por memoria, por lo que su kilometraje puede variar.

#!/usr/bin/env bash echo ''stats items'' / | nc localhost 11211 / | grep -oe '':[0-9]*:'' / | grep -oe ''[0-9]*'' / | sort / | uniq / | xargs -L1 -I{} bash -c ''echo "stats cachedump {} 1000" | nc localhost 11211''

Lo que hace, recorre todas las losas de la caché e imprime 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 fines de depuración en una máquina local.


Encontré una manera, gracias al enlace aquí (con la discusión de grupo de google original aquí )

Primero, Telnet a su servidor:

telnet 127.0.0.1 11211

A continuación, enumere los elementos para obtener los identificadores de losa:

stats items STAT items:3:number 1 STAT items:3:age 498 STAT items:22:number 1 STAT items:22:age 498 END

El primer número después de ''artículos'' es la identificación de la losa. Solicite un volcado de memoria caché para cada identificación de planchón, con un límite para el número máximo de volcado de claves:

stats cachedump 3 100 ITEM views.decorators.cache.cache_header..cc7d9 [6 b; 1256056128 s] END stats cachedump 22 100 ITEM views.decorators.cache.cache_page..8427e [7736 b; 1256056128 s] END


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 ayudarte.

Ejemplo -

from memcached_stats import MemcachedStats mem = MemcachedStats() mem.keys() [''key-1'', ''key-2'', ''key-3'', ... ]


Si tiene PHP y PHP-memcached instalado, puede ejecutar

$ php -r ''$c = new Memcached(); $c->addServer("localhost", 11211); var_dump( $c->getAllKeys() );''