Ich habe redis DUMP Befehl versucht, umleiten zu Datei (oder Rohr), aber RESTORE meldet diesen Fehler:
%Vor%Mir ist bewusst, dass MIGRATE das online erledigen kann, aber MIGRATE löscht auch diesen Schlüssel vom ursprünglichen Server und ich möchte nicht, dass ich ihn erneut dem öffentlichen Internet zugänglich mache.
Es gibt einige Optionen von Drittanbietern, zum Beispiel redis-rdb-tools , aber schließlich wie genau funktionieren DUMP
und RESTORE
?
Die Befehle dump / restore sind eigentlich nicht für die Verwendung über die Befehlszeile gedacht, da das Serialisierungsformat binär ist (es ist dasselbe, das für RDB-Dumps verwendet wird). Es macht es unpraktisch, weil die Shell diese Zeichen interpretiert (selbst wenn das "druckbare" Format verwendet wird).
Hier ist das "druckbare" Format:
%Vor%Das Format "druckbar" kann nicht als Eingabe für die Option -x verwendet werden, die tatsächlich die tatsächlichen Daten erwartet. Dies ist ein irreführendes Verhalten von redis-cli.
Es gibt jedoch eine einfache Möglichkeit, das Rohformat zu erhalten:
%Vor%Nun ist es nicht möglich, das Ergebnis eines --raw-Dumps direkt in eine -x-Zurückschreibung zu leiten, weil das letzte Zeichen falsch ist. Vergleichen Sie die Ausgabe des --raw und des druckbaren Dumps. Sie werden feststellen, dass die Option --raw am Ende ein zusätzliches \ n hinzufügt. Die rohe Option ist nicht 100% rohe; -)
Dieses zusätzliche Zeichen muss entfernt werden, bevor die Daten mit der Option -x verarbeitet werden können. Schließlich ist der richtige Befehl (auf einem GNU / Linux-System), um die Ausgabe eines Dumps in einer Wiederherstellung zu pumpen:
%Vor%Das ist nicht schön. Ich gehe davon aus, dass die meisten Leute sich eher auf ein Perl / Python / Ruby-Skript als auf die Shell verlassen würden, um solche Aufgaben zu erledigen.