Antworten:
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" .
In der aktuellen Version von memcached
gibt es auch memcached-tool
Perl-Skript, zB Verwendung:
memcached-tool localhost:11211 dump | less
das gibt alle Schlüssel und Werte aus.
Um eine Liste von Schlüsseln von einem Server zu sichern, verwenden Sie memcdump
/ memdump
tool, 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)
Um einen Schlüsselwert auszudrucken, können Sie einen memccat
Befehl verwenden, z
memccat CACHE-KEY
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}
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
Siehe: Wie exportiere ich alle Schlüssel und Werte aus dem mit Python zwischengespeicherten Speicher?
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.
Installieren Sie 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), da er localhost
anscheinend nicht funktioniert.
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.