Ver contenido de memcached

36

¿Hay alguna herramienta para explorar lo que actualmente se almacena en caché dentro de un grupo de memcached? No hay muchos gráficos, pero la clave / valores reales almacenados actualmente.

Tom
fuente

Respuestas:

9

Probar stats items, es decir

echo "stats items" | nc 127.0.0.1 11211
danlefree
fuente
16
¿Cómo responde esto a la pregunta? Esto solo proporciona las estadísticas del servidor, no recupera ninguna clave.
Jagtesh Chadha
24

La respuesta correcta sería echo "stats cachedump SLABS_ID LIMIT" | nc HOSTNAME PORT

p.ej. echo "stats cachedump 15 4" | nc 127.0.0.1 11211

Esto daría la salida en las líneas 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

Nota: Este es un comando no documentado que no es compatible con el equipo de memcached y se puede eliminar en cualquier versión. Para obtener la referencia completa, consulte el comando Comprender las estadísticas de Memcached cachedump .

Jagtesh Chadha
fuente
cachedump se limita a una cantidad indocumentado de datos, no greated que 1-2mb así que no es confiable
John
11

herramienta memcached

En la versión reciente de memcachedtambién hay un memcached-toolscript perl, por ejemplo, uso:

memcached-tool localhost:11211 dump | less

que vuelca todas las claves y valores.

memdump

Para volcar una lista de claves de un servidor, use memcdump/ memdumptool, por ej.

memcdump --servers=localhost 

Para volcar todos los objetos:

memcdump --servers=localhost | xargs -L1 -I% sh -c 'echo "get %" | nc localhost 11211'

Para volcar todos los valores clave en archivos separados:

while read -r key; do [ -f "$key" ] || echo "get $key" | nc localhost 11211 > "$key.dump"; done < <(memcdump --server localhost)

memccat

Para imprimir un valor clave, puede usar el memccatcomando, p. Ej.

memccat CACHE-KEY

Golpetazo

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

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

netcat

Aquí hay un ejemplo para obtener el valor de un solo artículo usando netcat:

echo "get 13456_-cache-some_object" | nc 127.0.0.1 11211

Pitón

Ver: ¿Cómo exportar todas las claves y valores de memcached con Python?

kenorb
fuente
2
Esta respuesta me ayudó a encontrar la herramienta real de memcached: memcdump . Vea esta respuesta: stackoverflow.com/a/14491419/720360
mmuller
1
Primero tuve que hacerlo apt install libmemcached-tools, pero luego todavía no estaba en mi camino, así que /usr/share/memcached/scripts/memcached-tool localhost:11211 dump. Ubuntu 18.
Camille Goudeseune
7

Intente usar el telnetcomando, por ejemplo:

$ telnet 0 11211
stats
stats items
set key 1 23 8
get key
silviud
fuente
6

Instale libmemcached-toolsy luego puede usar este comando para obtener todas las claves:

memcdump --server=127.0.0.1

Para ver el contenido, puede solicitar una clave específica:

memccat --server=127.0.0.1 SOME_KEY

o puede recorrer la lista de teclas en Bash:

for key in $(memcdump --server=127.0.0.1); do echo ------ $key ------; memccat --server=127.0.0.1 $key; done

Asegúrese de usar 127.0.0.1 (si está ejecutando el comando en el mismo host) porque localhostno parece funcionar.

Tobia
fuente
2

En memcached básico, no creo que haya ninguna forma de consultar las claves almacenadas en el servidor. Lo único que puede obtener es estadísticas relacionadas con el almacenamiento y los elementos almacenados.

Sin embargo, algunos proveedores que han desarrollado soluciones compatibles con Memcached , por ejemplo , Gear6 , han agregado funcionalidad para permitir consultas.

Chris
fuente