Wie kann ich alle Schlüssel in meinen zwischengespeicherten Instanzen festlegen?
Ich habe versucht zu googeln, aber nicht viel gefunden, außer dass dies PHP
eine getAllKeys
Methode unterstützt , was bedeutet, dass es tatsächlich irgendwie möglich ist, dies zu tun. Wie kann ich innerhalb einer Telnet-Sitzung dasselbe erreichen?
Ich habe alle Optionen zum Abrufen ausprobiert, die in Memcached Cheat Sheet und Memcached Telnet Command Summary erwähnt sind , aber keine davon funktioniert, und ich bin ratlos, den richtigen Weg zu finden, um dies zu tun.
Hinweis: Ich mache dies derzeit in der Entwicklung, daher kann davon ausgegangen werden, dass es keine Probleme gibt, wenn neue Schlüssel gesetzt werden oder andere solche Rennbedingungen auftreten, und die Anzahl der Schlüssel wird ebenfalls begrenzt sein.
Antworten:
Dank des Links hier einen Weg gefunden (mit der ursprünglichen Google-Gruppendiskussion hier )
Zunächst
Telnet
zu Ihrem Server:Listen Sie als Nächstes die Elemente auf, um die Platten-IDs zu erhalten:
Die erste Zahl nach 'items' ist die Platten-ID. Fordern Sie für jede Slab-ID einen Cache-Dump an, wobei die maximale Anzahl der zu sichernden Schlüssel begrenzt ist:
quelle
b
ist Bytes,s
ist Epochenzeit Sekundenlru_crawler metadump all
dass alle Cache-Schlüssel ausgegeben werden, nicht "nur" die ersten 1M .. github.com/memcached/memcached/blob/…memdump
Es gibt einen
memcdump
(manchmalmemdump
) Befehl für diesen (Teil vonlibmemcached-tools
), z.Dadurch werden alle Schlüssel zurückgegeben.
memcached-tool
In der aktuellen Version von
memcached
gibt es auchmemcached-tool
Befehl, zHiermit werden alle Schlüssel und Werte ausgegeben.
Siehe auch:
quelle
dump
Unterbefehl fürmemcached-tool
scheint den Cache zu leeren :( - Könnte sicherer zu verwenden seindisplay
oderstats
zuerst.libmemcached-tools
, und die Binärdatei des Tools heißt stattdessen memcdump.memcached-tool
es etwas versteckt in einem Verzeichnis, das möglicherweise nicht in einem Standard enthalten istPATH
- zumindest unter Ubuntu Xenial - hier:/usr/share/memcached/scripts/
Basis ist @mu 無 antworte hier. Ich habe ein Cache-Dump-Skript geschrieben.
Das Skript gibt den gesamten Inhalt eines zwischengespeicherten Servers aus. Es wurde mit Ubuntu 12.04 und einem lokal gehosteten Host getestet, sodass Ihre Laufleistung variieren kann.
Was es tut, geht es durch alle Cache-Platten und druckt jeweils 1000 Einträge.
Bitte beachten Sie bestimmte Einschränkungen dieses Skripts, z. B. dass es möglicherweise nicht für einen 5-GB-Cache-Server skaliert werden kann. Es ist jedoch nützlich für Debugging-Zwecke auf einem lokalen Computer.
quelle
memcached 1.4.21-1.1+deb8u1
ich explizit einen Beendigungsbefehl an memcached senden. Ich habe Ihren Befehl dahingehend geändert und funktioniert jetzt ordnungsgemäß: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'
Vielen Dank, dass Sie dies geteilt haben!Wenn Sie PHP & PHP-memcached installiert haben, können Sie ausführen
quelle
$c->setOption(Memcached::OPT_BINARY_PROTOCOL, false);
Für neuere Versionen von MemcachedBash
Führen Sie die folgenden Schritte aus, um eine Liste der Schlüssel in Bash zu erhalten.
Definieren Sie zunächst die folgende Wrapper-Funktion, um die Verwendung zu vereinfachen (Kopieren und Einfügen in die Shell):
Memcached 1.4.31 und höher
Sie können verwenden
lru_crawler metadump all
Befehl (die meisten) Metadaten für (alle) Elemente im Cache sichern.Beispielbefehl mit der zuvor definierten Funktion:
Siehe: ReleaseNotes1431 .
Memcached 1.4.30 und darunter
Rufen Sie die Liste der Platten mit dem Befehl items statistics ab , z. B.:
Für jede Slub-Klasse können Sie eine Liste der Elemente abrufen, indem Sie die Slub-ID zusammen mit der Grenzwertnummer (
0
- unbegrenzt) angeben :Hinweis: Sie müssen dies für jeden zwischengespeicherten Server tun.
Um alle Schlüssel von allen Stubs aufzulisten, ist hier der Einzeiler (pro Server):
Hinweis: Der obige Befehl kann beim Zugriff auf die Elemente schwerwiegende Leistungsprobleme verursachen. Es wird daher nicht empfohlen, ihn live auszuführen.
Anmerkungen:
Quelle: GH-405 .
Verbunden:
protocol.txt
Dokumentdatei.quelle
Am einfachsten ist es, das Paket python-memcached-stats ( https://github.com/abstatic/python-memcached-stats) zu verwenden
Die keys () -Methode sollte Sie zum Laufen bringen.
Beispiel -
quelle
python -m memcached_stats <ip> <port>