Zobacz zawartość memcached

36

Czy są jakieś narzędzia do odkrywania, co jest obecnie buforowane w puli pamięci memcached? Nie wiele wykresów, ale aktualnie przechowywane klucze / wartości.

Tomek
źródło

Odpowiedzi:

9

Spróbuj stats items- tj

echo "stats items" | nc 127.0.0.1 11211
danlefree
źródło
16
Jak to odpowiada na pytanie ?! Daje to tylko statystyki serwera, nie pobiera żadnych kluczy.
Jagtesh Chadha,
24

Prawidłowa odpowiedź to echo "stats cachedump SLABS_ID LIMIT" | nc HOSTNAME PORT

na przykład. echo "stats cachedump 15 4" | nc 127.0.0.1 11211

To dałoby wynik w liniach:

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

Uwaga: Jest to nieudokumentowane polecenie, które nie jest obsługiwane przez zespół memcached i można je usunąć w dowolnej wersji. Aby uzyskać pełne informacje, zapoznaj się z komendą Understanding Memcached stats cachedump .

Jagtesh Chadha
źródło
cacheump jest ograniczony do nieudokumentowanej ilości danych, nie jest zapisany w ilości większej niż 1-2 MB, więc nie jest wiarygodny
Jan
11

narzędzie memcached

W najnowszej wersji memcachedjest też memcached-toolskrypt perla, np. Użycie:

memcached-tool localhost:11211 dump | less

który zrzuca wszystkie klucze i wartości.

memdump

Aby zrzucić listę kluczy z serwera, użyj memcdump/ memdumptool, np

memcdump --servers=localhost 

Aby zrzucić wszystkie obiekty:

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

Aby zrzucić wszystkie kluczowe wartości do osobnych plików:

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

memccat

Aby wydrukować wartość klucza, możesz użyć memccatpolecenia, np

memccat CACHE-KEY

Grzmotnąć

Aby zrzucić wszystkie klucze w powłoce Bash, spróbuj:

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

netcat

Oto przykład, aby uzyskać wartość pojedynczego elementu za pomocą netcat:

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

Pyton

Zobacz: Jak wyeksportować wszystkie klucze i wartości z memcached za pomocą Pythona?

kenorb
źródło
2
Ta odpowiedź pomogła mi znaleźć rzeczywiste narzędzie memcached: memcdump . Zobacz tę odpowiedź: stackoverflow.com/a/14491419/720360
mmuller
1
Najpierw musiałem apt install libmemcached-tools, ale potem nie było na mojej drodze, więc /usr/share/memcached/scripts/memcached-tool localhost:11211 dump. Ubuntu 18.
Camille Goudeseune
7

Spróbuj użyć telnetpolecenia, np .:

$ telnet 0 11211
stats
stats items
set key 1 23 8
get key
silviud
źródło
6

Zainstaluj, libmemcached-toolsa następnie możesz użyć tego polecenia, aby uzyskać wszystkie klucze:

memcdump --server=127.0.0.1

Aby zobaczyć zawartość, możesz poprosić o określony klucz:

memccat --server=127.0.0.1 SOME_KEY

lub możesz przewinąć listę kluczy w Bash:

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

Pamiętaj, aby użyć 127.0.0.1 (jeśli uruchamiasz polecenie na tym samym hoście), ponieważ localhostwydaje się, że nie działa.

Tobia
źródło
2

W podstawowym memcached nie sądzę, że istnieje jakikolwiek sposób zapytania o klucze przechowywane na serwerze. Jedyne, co możesz uzyskać, to statystyki związane z przechowywaniem i przechowywanymi przedmiotami.

Niektórzy dostawcy, którzy opracowali rozwiązania zgodne z Memcached , np. Gear6 , dodali jednak funkcjonalność, która umożliwia zapytania.

Chris
źródło