Visualizza il contenuto di memcached


36

Esistono strumenti per esplorare ciò che è attualmente memorizzato nella cache in un pool memcached? Non ci sono molti grafici, ma la chiave / i valori effettivi attualmente memorizzati.

Risposte:


9

Prova stats items- ad es

echo "stats items" | nc 127.0.0.1 11211

16
In che modo questo risponde alla domanda ?! Questo fornisce solo le statistiche del server, non recupera alcuna chiave.
Jagtesh Chadha,

24

La risposta corretta sarebbe echo "stats cachedump SLABS_ID LIMIT" | nc HOSTNAME PORT

per esempio. echo "stats cachedump 15 4" | nc 127.0.0.1 11211

Ciò darebbe l'output sulle righe di:

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: si tratta di un comando non documentato che non è supportato dal team memcached e può essere rimosso in qualsiasi versione. Per il riferimento completo, controlla Informazioni sul comando memorizzato nella cache delle statistiche memcached .


cache è limitato a una quantità non documentata di dati, non ottimizzata di 1-2 MB, quindi non è affidabile
John

11

memcached-tool

Nella versione recente di memcachedc'è anche lo memcached-toolscript perl, ad es. Utilizzo:

memcached-tool localhost:11211 dump | less

che scarica tutte le chiavi e i valori.

memdump

Per scaricare un elenco di chiavi da un server, utilizzare memcdump/ memdumptool, ad es

memcdump --servers=localhost 

Per scaricare tutti gli oggetti:

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

Per scaricare tutti i valori chiave in file separati:

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

memccat

Per stampare un valore chiave, è possibile utilizzare il memccatcomando, ad es

memccat CACHE-KEY

bash

Per scaricare tutte le chiavi nella shell Bash, prova:

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

netcat

Ecco un esempio per ottenere il valore di un singolo articolo usando netcat:

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

Pitone

Vedi: Come esportare tutte le chiavi e i valori da memcached con Python?


2
Questa risposta mi ha aiutato a trovare l' attuale strumento memcached: memcdump . Vedere questa risposta: stackoverflow.com/a/14491419/720360
mmuller

1
Prima dovevo farlo apt install libmemcached-tools, ma poi non era ancora sulla mia strada, quindi /usr/share/memcached/scripts/memcached-tool localhost:11211 dump. Ubuntu 18.
Camille Goudeseune,

7

Prova a usare il telnetcomando, ad esempio:

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

6

Installa libmemcached-toolse quindi puoi utilizzare questo comando per ottenere tutte le chiavi:

memcdump --server=127.0.0.1

Per vedere i contenuti, puoi chiedere una chiave specifica:

memccat --server=127.0.0.1 SOME_KEY

oppure puoi scorrere l'elenco delle chiavi in ​​Bash:

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

Assicurati di utilizzare 127.0.0.1 (se stai eseguendo il comando sullo stesso host) perché localhostnon sembra funzionare.


2

Nel memcached di base non penso che ci sia alcun modo di interrogare le chiavi memorizzate nel server. L'unica cosa che puoi ottenere sono le statistiche relative allo stoccaggio e agli oggetti memorizzati.

Alcuni fornitori che hanno sviluppato soluzioni conformi memcached, ad esempio Gear6 , hanno tuttavia aggiunto funzionalità per consentire l'interrogazione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.