Ver conteúdo de memcached

36

Existem ferramentas para explorar o que está atualmente armazenado em cache dentro de um pool memcached? Não há muitos gráficos, mas a chave / valores reais atualmente armazenados.

Tom
fonte

Respostas:

9

Tente stats items- ie

echo "stats items" | nc 127.0.0.1 11211
danlefree
fonte
16
Como isso responde à pergunta ?! Isso fornece apenas as estatísticas do servidor, não recupera nenhuma chave.
Jagtesh Chadha
24

A resposta correta seria echo "stats cachedump SLABS_ID LIMIT" | nc HOSTNAME PORT

por exemplo. echo "stats cachedump 15 4" | nc 127.0.0.1 11211

Isso daria a saída nas linhas 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 é um comando não documentado que não é suportado pela equipe do memcached e pode ser removido em qualquer versão. Para obter a referência completa, consulte Noções básicas sobre o comando cachedump do Memcached stats .

Jagtesh Chadha
fonte
cachedump é limitada a um montante não documentada de dados, não greated de 1-2mb por isso não é confiável
John
11

ferramenta memcached

Na versão recente do memcachedtambém há memcached-toolscript perl, por exemplo, uso:

memcached-tool localhost:11211 dump | less

que despeja todas as chaves e valores.

memdump

Para despejar uma lista de chaves de um servidor, use memcdump/ memdumptool, por exemplo

memcdump --servers=localhost 

Para despejar todos os objetos:

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

Para despejar todos os valores-chave em arquivos separados:

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

memccat

Para imprimir um valor-chave, você pode usar o memccatcomando, por exemplo

memccat CACHE-KEY

Bater

Para despejar todas as chaves no shell Bash, tente:

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

netcat

Aqui está um exemplo para obter o valor de um único item usando netcat:

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

Python

Veja: Como exportar todas as chaves e valores do memcached com Python?

kenorb
fonte
2
Esta resposta me ajudou a encontrar a ferramenta memcached real : memcdump . Veja esta resposta: stackoverflow.com/a/14491419/720360
mmuller
1
Primeiro tive que apt install libmemcached-toolsfazê-lo, mas ainda não estava no meu caminho, então /usr/share/memcached/scripts/memcached-tool localhost:11211 dump. Ubuntu 18.
Camille Goudeseune
7

Tente usar o telnetcomando, por exemplo:

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

Instale libmemcached-toolse, em seguida, você pode usar este comando para obter todas as chaves:

memcdump --server=127.0.0.1

Para ver o conteúdo, você pode solicitar uma chave específica:

memccat --server=127.0.0.1 SOME_KEY

ou você pode percorrer a lista de chaves no Bash:

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

Certifique-se de usar 127.0.0.1 (se você estiver executando o comando no mesmo host) porque localhostnão parece funcionar.

Tobia
fonte
2

No memcached básico, não acho que exista nenhuma maneira de consultar as chaves armazenadas no servidor. O único que você pode obter são as estatísticas relacionadas ao armazenamento e aos itens armazenados.

Alguns fornecedores que desenvolveram soluções compatíveis com memcached, por exemplo , o Gear6 , acrescentaram funcionalidade para permitir a consulta.

Chris
fonte