Odpowiedzi:
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 .
W najnowszej wersji memcached
jest też memcached-tool
skrypt perla, np. Użycie:
memcached-tool localhost:11211 dump | less
który zrzuca wszystkie klucze i wartości.
Aby zrzucić listę kluczy z serwera, użyj memcdump
/ memdump
tool, 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)
Aby wydrukować wartość klucza, możesz użyć memccat
polecenia, np
memccat CACHE-KEY
Aby zrzucić wszystkie klucze w powłoce Bash, spróbuj:
exec {memcache}<>/dev/tcp/localhost/11211; printf "stats items\nquit\n" >&${memcache}; cat <&${memcache}
Oto przykład, aby uzyskać wartość pojedynczego elementu za pomocą netcat
:
echo "get 13456_-cache-some_object" | nc 127.0.0.1 11211
Zobacz: Jak wyeksportować wszystkie klucze i wartości z memcached za pomocą Pythona?
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.
Zainstaluj, libmemcached-tools
a 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ż localhost
wydaje się, że nie działa.
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.