Frage Inhalt von memcached anzeigen


Gibt es irgendwelche Werkzeuge, um zu erforschen, was gegenwärtig in einem memcached Pool zwischengespeichert wird? Nicht einige Grafiken, sondern die aktuell gespeicherten Schlüssel / Werte.


32
2017-11-30 11:42


Ursprung




Antworten:


Versuchen stats items - d.h.

echo "stats items" | nc 127.0.0.1 11211

8
2017-11-30 12:12



Wie beantwortet das die Frage ?! Dies gibt nur die Serverstatistiken aus, ruft keine Schlüssel ab. - Jagtesh Chadha


Die richtige Antwort wäre echo "stats cachedump SLABS_ID LIMIT" | nc HOSTNAME PORT

z.B. echo "stats cachedump 15 4" | nc 127.0.0.1 11211

Dies würde die Ausgabe in den folgenden Zeilen enthalten:

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

Hinweis: Dies ist ein nicht dokumentierter Befehl, der vom Memcached-Team nicht unterstützt wird und in jeder Version entfernt werden kann. Für die vollständige Referenz, Auschecken Verstehen des cachedump-Befehls Memcached stats.


22
2017-07-05 06:13





Memcached-Werkzeug

In der neuesten Version von memcached Es gibt auch memcached-tool Perl-Skript, z.B. Verwendungszweck:

memcached-tool localhost:11211 dump | less

was alle Schlüssel und Werte ausgibt.

memdump

Um eine Liste von Schlüsseln von einem Server zu erstellen, verwenden Sie memcdump/memdump Werkzeug, z.B.

memcdump --servers=localhost 

So legen Sie alle Objekte ab:

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

So speichern Sie alle Schlüsselwerte in separaten Dateien:

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

memccat

Um einen Schlüsselwert zu drucken, können Sie verwenden memccat Befehl, z.B.

memccat CACHE-KEY

Bash

Um alle Schlüssel in der Bash-Shell auszugeben, versuchen Sie Folgendes:

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

Netcat

Hier ist ein Beispiel, um den Wert eines einzelnen Artikels zu erhalten netcat:

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

Python

Sehen: Wie exportiert man alle Schlüssel und Werte aus memcached mit Python?


8
2018-03-09 17:59



Diese Antwort hat mir geholfen, das zu finden tatsächlich Memcached-Werkzeug: memcdump. Siehe diese Antwort: stackoverflow.com/a/14491419/720360 - mmuller


Installieren libmemcached-tools und dann können Sie diesen Befehl verwenden, um alle Schlüssel zu erhalten:

memcdump --server=127.0.0.1

Um den Inhalt zu sehen, können Sie nach einem bestimmten Schlüssel fragen:

memccat --server=127.0.0.1 SOME_KEY

oder Sie können die Liste der Schlüssel in Bash durchlaufen:

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

Stellen Sie sicher, dass Sie 127.0.0.1 verwenden (wenn Sie den Befehl auf demselben Host ausführen), weil localhost scheint nicht zu funktionieren.


5
2018-04-04 09:02





Versuchen Sie es mit telnet Befehl, z.B.

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

5
2017-12-10 03:08





In basic memcached glaube ich nicht, dass es eine Möglichkeit gibt, nach Schlüssel zu suchen, die auf dem Server gespeichert sind. Der einzige Gedanke, den Sie bekommen können, sind Statistiken in Bezug auf Speicher und gespeicherte Artikel.

Einige Anbieter, die Memcached-konforme Lösungen entwickelt haben, z. Gear6, haben jedoch Funktionalität hinzugefügt, um Abfragen zu ermöglichen.


1
2017-12-05 12:18