Redis
 sql >> Datenbank >  >> NoSQL >> Redis

Kombinieren Sie zwei Redis-Instanzen zu einer einzigen Instanz mit zwei dbs

BEARBEITEN

Diese Antwort ist für neuere Versionen von Redis nicht mehr korrekt. Verlassen Sie die Antwort aus historischen Gründen.

Wenn Sie bereit sind, ein wenig mit Binärdateien herumzuspielen, können Sie die beiden dump.rdb-Dateien einfach zu einer kombinieren.

Annahmen :

  1. Jeder Dump hat nur eine einzige Datenbank - die Standarddatenbank
  2. Sie verwenden Redis 2.4.x und daher ist die Dump-Version entweder 2 oder 3

Wenn Sie die Datei in einem Hex-Editor öffnen, ist dies das Format der RDB-Datei -

REDIS000x FE 00 <actual data > FF

Hier -

  • 000x ist die RDB-Versionsnummer. In Ihrem Fall wird es höchstwahrscheinlich 0002 oder 0003 sein
  • FE ist der Datenbankselektor und 00 ist die Datenbanknummer
  • <actual data> sind die Schlüssel-Wert-Paare in der aktuellen Datenbank. Sie können dies für Ihren aktuellen Zweck als binären Blob behandeln.
  • FF ist das letzte Byte in der Datei und zeigt das Ende der rdb-Datei an

Um also die beiden RDB-Dateien zusammenzuführen, gehen Sie wie folgt vor -

  1. Erstellen Sie eine neue Zieldatei
  2. Kopieren Sie alles aus der ersten Datei außer dem letzten FF
  3. Kopieren Sie zwei Bytes FE 01 um den Beginn der zweiten Datenbank anzuzeigen
  4. HINWEIS:Wenn Sie sicher sind, dass die beiden Datenbanken keine doppelten Schlüssel haben, und Sie sie in einer einzigen Datenbank kombinieren möchten, überspringen Sie einfach die zwei Bytes FE 01 oben erwähnt.
  5. Überspringen Sie von der zweiten Datei die ersten 11 Bytes - d.h. überspringen Sie REDIS000x FE 00
  6. Kopieren Sie den Rest der zweiten Datei, einschließlich des letzten Bytes FF

Sie können diese neue dump.rdb nun in das entsprechende Verzeichnis in redis kopieren und neu starten.

Wenn Sie interessiert sind, finden Sie hier die vollständige Dokumentation des Redis-Dump-Dateiformats, aber Sie müssen nicht alles für diesen einfachen Anwendungsfall verstehen.