Inhalt von memcached anzeigen

36

Gibt es Tools, um herauszufinden, was derzeit in einem zwischengespeicherten Pool zwischengespeichert ist? Nicht viele Grafiken, aber die aktuell gespeicherten Schlüssel / Werte.

Tom
quelle

Antworten:

9

Versuchen Sie stats items- dh

echo "stats items" | nc 127.0.0.1 11211
danlefree
quelle
16
Wie beantwortet das die Frage ?! Dies gibt nur die Serverstatistik aus und ruft keine Schlüssel ab.
Jagtesh Chadha
24

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 folgenden Zeilen ergeben:

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. Die vollständige Referenz finden Sie unter Grundlegendes zum Befehl "Memcached stats cachedump" .

Jagtesh Chadha
quelle
cachedump ist auf eine undokumentierte Datenmenge beschränkt, die nicht größer als 1 bis 2 MB ist. Daher ist sie nicht zuverlässig
John,
11

memcached-tool

In der aktuellen Version von memcachedgibt es auch memcached-toolPerl-Skript, zB Verwendung:

memcached-tool localhost:11211 dump | less

das gibt alle Schlüssel und Werte aus.

memdump

Um eine Liste von Schlüsseln von einem Server zu sichern, verwenden Sie memcdump/ memdumptool, z

memcdump --servers=localhost 

So sichern Sie alle Objekte:

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 auszudrucken, können Sie einen memccatBefehl verwenden, z

memccat CACHE-KEY

Bash

Versuchen Sie Folgendes, um alle Schlüssel in der Bash-Shell zu sichern:

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

Siehe: Wie exportiere ich alle Schlüssel und Werte aus dem mit Python zwischengespeicherten Speicher?

Kenorb
quelle
2
Diese Antwort hat mir geholfen, das eigentliche memcached Tool zu finden: memcdump . Siehe diese Antwort: stackoverflow.com/a/14491419/720360
mmuller
1
Ich musste es zuerst apt install libmemcached-tools, aber dann war es immer noch nicht auf meinem Weg, also /usr/share/memcached/scripts/memcached-tool localhost:11211 dump. Ubuntu 18.
Camille Goudeseune
7

Versuchen Sie es mit einem telnetBefehl, zB:

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

Installieren Sie libmemcached-toolsund 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), da er localhostanscheinend nicht funktioniert.

Tobia
quelle
2

In Basic Memcached glaube ich nicht, dass es eine Möglichkeit gibt, nach Schlüsseln zu suchen, die auf dem Server gespeichert sind. Die einzige Möglichkeit, die Sie erhalten können, sind Statistiken in Bezug auf Speicher und gespeicherte Objekte.

Einige Anbieter, die memcached-kompatible Lösungen entwickelt haben, z. B. Gear6 , haben jedoch Funktionen hinzugefügt, die das Abfragen ermöglichen.

Chris
quelle