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.