Wie exportiert man alle Schlüssel und Werte aus memcached mit python-memcache?

7

Ich möchte alle Schlüssel und Werte von einem Memcached-Server mit Python-Memcache exportieren. In diesem Modul gibt es keine solche Funktion. Wie geht es dann?

Vielleicht wäre etwas komplizierterer mit dem "Sockel" -Modul erforderlich.

    
Falken 20.04.2011, 12:28
quelle

7 Antworten

20

Dadurch erhalten Sie alle Schlüssel auf einem Memcached-Server. Sie können jede Memcached-Client-Bibliothek verwenden, um den Wert für jeden Schlüssel abzurufen.

%Vor%     
lrd 25.01.2012 16:00
quelle
10

Verwenden Sie den Memdump und memcat Dienstprogramme aus der libmemcached -Suite. Sie können nicht garantieren, dass Sie alle Daten erhalten, aber sie sind einfach zu bedienen.

Hinweis: Auf ubuntu / debian können Sie diese erhalten, indem Sie das Paket libmemcached-tools integrieren, und sie heißen memcdump und memccat .

dump alle Schlüssel:

%Vor%

dump alle Werte:

%Vor%

natürlich müssen Sie immer noch die Schlüssel und Werte zusammenbringen - ich würde vorschlagen, die Schlüssel zu einer Datei zu dumpen und diese dann als Eingabe für memcat zu verwenden (das sichert die Konsistenz). Dann müssen Sie natürlich die Werte teilen - ein Punkt ist der Begrenzer, den ich glaube - und dann die Schlüssel und Werte der Reihe nach paaren. Da ist wahrscheinlich irgendwo ein Skript ...

    
scytale 23.01.2013 23:38
quelle
6

Es gibt keine Möglichkeit, das zu tun. Memcache-Protokoll definiert keinen Befehl zum Iterieren über Schlüssel. Sie müssen den Schlüssel kennen, um Wert abzurufen.

    
vartec 20.04.2011 12:48
quelle
0

Wie von anderen an vielen Stellen erwähnt, gibt es im allgemeinen Fall keine Möglichkeit, alle Schlüssel aufzulisten, die in einer Memcached-Instanz gespeichert sind. ZB Memcached: Alle Schlüssel auflisten , Konnte nicht alle Memcache-Schlüssel über Telnet-Client

abrufen

Sie können jedoch etwas wie die erste 1Meg von Schlüsseln auflisten, was normalerweise genug ist, um eine Vorstellung davon zu haben, was während der Entwicklung im Memcache-Server gespeichert wird. Grundsätzlich können Sie zwei Optionen haben, um Elemente vom Memcache-Server zu extrahieren:

(1) Um eine Teilmenge von Schlüsseln und Werten abzurufen, können Sie die oben eingeführte Methode mit @lrd

aufrufen Wenn die Daten jedoch sehr groß sind (z. B. Millionen von Datensätzen), kann diese Methode sehr zeitaufwendig sein. Außerdem kann diese Methode nur eine Teilmenge der Schlüssel & amp; Werte.

(2) In Fällen, in denen Sie alle Elemente des memcached-Servers iterieren möchten, ist das Protokollieren der Schlüssel beim Hinzufügen / set / cas-Elemente zum memcache-Server eine viel billigere Lösung. Dann können Sie die Protokolldatei durchlesen, um alle Schlüssel zu erhalten und die Werte vom Memcache-Server zu erhalten. Wie in dieser Mailingliste beschrieben: Alle Objekte in memcached auflisten

    
Good Will 05.01.2015 13:21
quelle
0

Am einfachsten ist es, das Paket python-memcached-stats Ссылка

zu verwenden

Die keys () -Methode sollte Sie zum Laufen bringen.

    
abhishek_M 07.02.2017 07:15
quelle
0

In Bash kann dieses Skript helfen:

%Vor%

Anstelle von memccat können Sie auch direkt eine Verbindung zum Port herstellen und den Befehl get SOME-KEY senden (Beispiel mit Netcat: echo "get $key" | nc localhost 11211 ).

    
kenorb 02.03.2018 21:05
quelle
-2

Sie suchen den Memcache-Befehl "flush_all": Ссылка

Mit python-memcached sieht es etwa so aus:

%Vor%     
Paul 20.04.2011 14:07
quelle

Tags und Links