Jak mogę uzyskać wszystkie klucze ustawione w moich instancjach memcached?
Próbowałem googlować, ale nie znalazłem wiele poza tym, że PHP
obsługuje getAllKeys
metodę , co oznacza, że w rzeczywistości można to jakoś zrobić. Jak mogę uzyskać to samo w sesji telnet?
Wypróbowałem wszystkie opcje związane z pobieraniem, o których mowa w ściągawce memcached i podsumowaniu poleceń telnet Memcached , ale żadna z nich nie działa i nie mogę znaleźć właściwego sposobu na zrobienie tego.
Uwaga: obecnie robię to w fazie rozwoju, więc można założyć, że nie będzie żadnych problemów z powodu ustawiania nowych kluczy lub innych podobnych warunków wyścigu, a liczba kluczy również będzie ograniczona.
Odpowiedzi:
Znalazłem sposób, dzięki linkowi tutaj (z oryginalną dyskusją grupy Google tutaj )
Najpierw
Telnet
na twój serwer:Następnie wypisz elementy, aby uzyskać identyfikatory płyty:
Pierwsza liczba po „pozycji” to identyfikator płyty. Poproś o zrzut pamięci podręcznej dla każdego identyfikatora płyty, z ograniczeniem maksymalnej liczby kluczy do zrzucenia:
źródło
b
to bajty,s
to epoka czas sekundylru_crawler metadump all
że zrzuci wszystkie klucze pamięci podręcznej, a nie „tylko” pierwszy 1M .. github.com/memcached/memcached/blob/memdump
Jest do tego
memcdump
(czasamimemdump
) polecenie (częśćlibmemcached-tools
), np .:która zwróci wszystkie klucze.
memcached-tool
W najnowszej wersji
memcached
jest teżmemcached-tool
polecenie, npktóry zrzuca wszystkie klucze i wartości.
Zobacz też:
źródło
dump
podrzędne dlamemcached-tool
wydaje się czyścić pamięć podręczną :( - może być bezpieczniejsze w użyciudisplay
lubstats
pierwsze.libmemcached-tools
, a plik binarny narzędzia nazywa się memcdump.memcached-tool
, jest nieco ukryty w katalogu, który może nie być w standardziePATH
- przynajmniej na Ubuntu Xenial - tutaj:/usr/share/memcached/scripts/
Bazuj na odpowiedzi @mu 無tutaj. Napisałem skrypt zrzutu pamięci podręcznej.
Skrypt zrzuca całą zawartość serwera memcached. Jest testowany z Ubuntu 12.04 i localhost memcached, więc Twój przebieg może się różnić.
Co robi, przechodzi przez wszystkie płyty pamięci podręcznej i drukuje 1000 wpisów z każdego.
Należy pamiętać o pewnych ograniczeniach tego skryptu, np. Może nie być skalowany dla serwera z pamięcią podręczną 5 GB. Ale jest to przydatne do debugowania na komputerze lokalnym.
źródło
memcached 1.4.21-1.1+deb8u1
musiałem jawnie wysłać polecenie wyjścia do memcached. Zmodyfikowałem twoje polecenie do tego i teraz działa poprawnie:echo -e "stats items\nquit" | nc localhost 11211 | grep -oe ':[0-9]*:' | grep -oe '[0-9]*' | sort | uniq | xargs -L1 -I{} bash -c 'echo -e "stats cachedump {} 1000\nquit" | nc localhost 11211'
Dzięki za udostępnienie tego! Całkiem przydatne do debugowania :)Jeśli masz zainstalowane PHP i PHP-memcached, możesz uruchomić
źródło
$c->setOption(Memcached::OPT_BINARY_PROTOCOL, false);
Dla nowszych wersji MemcachedGrzmotnąć
Aby uzyskać listę kluczy w Bash, wykonaj następujące kroki.
Najpierw zdefiniuj następującą funkcję opakowującą, aby była prosta w użyciu (kopiowanie i wklejanie do powłoki):
Memcached 1.4.31 i nowsze
Możesz użyć
lru_crawler metadump all
polecenia, aby zrzucić (większość) metadanych dla (wszystkich) elementów w pamięci podręcznej.Przykładowe polecenie przy użyciu wcześniej zdefiniowanej funkcji:
Zobacz: ReleaseNotes1431 .
Memcached 1.4.30 i starsze
Pobierz listę płyt za pomocą polecenia statystyki przedmiotów , np .:
Dla każdej klasy slub możesz uzyskać listę przedmiotów, podając identyfikator slub wraz z liczbą limitów (
0
- nieograniczona):Uwaga: Musisz to zrobić dla każdego serwera memcached.
Aby wyświetlić wszystkie klucze ze wszystkich kodów pośredniczących, oto jedna linijka (na jeden serwer):
Uwaga: powyższe polecenie może spowodować poważne problemy z wydajnością podczas uzyskiwania dostępu do elementów, dlatego nie zaleca się uruchamiania na żywo.
Uwagi:
Źródło: GH-405 .
Związane z:
protocol.txt
plik docs.źródło
Najłatwiej jest użyć pakietu python-memcached-stats, https://github.com/abstatic/python-memcached-stats
Metoda keys () powinna Cię uruchomić.
Przykład -
źródło
python -m memcached_stats <ip> <port>