Risposte:
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 .
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.
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)
Per stampare un valore chiave, è possibile utilizzare il memccatcomando, ad es
memccat CACHE-KEY
Per scaricare tutte le chiavi nella shell Bash, prova:
exec {memcache}<>/dev/tcp/localhost/11211; printf "stats items\nquit\n" >&${memcache}; cat <&${memcache}
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
Vedi: Come esportare tutte le chiavi e i valori da memcached con Python?
apt install libmemcached-tools, ma poi non era ancora sulla mia strada, quindi /usr/share/memcached/scripts/memcached-tool localhost:11211 dump. Ubuntu 18.
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.
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.