sql >> Databasteknik >  >> NoSQL >> Redis

Kombinera två Redis-instanser till en enda instans med två dbs

REDIGERA

Det här svaret är inte längre korrekt för nyare versioner av redis. Lämnar svaret av historiska skäl.

Om du är villig att leka lite med binära filer kan du enkelt kombinera de två dump.rdb-filerna till en.

Antaganden:

  1. Varje dump har bara en enda databas - standarddatabasen
  2. Du använder Redis 2.4.x, och därför är dumpversionen antingen 2 eller 3

Om du öppnar filen i en hex-editor är detta formatet för RDB-filen -

REDIS000x FE 00 FF

Här -

  • 000x är rdb-versionsnumret. Det kommer troligen att vara 0002 eller 0003 i ditt fall
  • FE är databasväljaren och 00 är databasnumret
  • är nyckel-värdeparen i den aktuella databasen. Du kan behandla detta som en binär blob för ditt nuvarande syfte.
  • FF är den sista byten i filen och indikerar slutet på rdb-filen

Så för att slå samman de två rdb-filerna, gör följande -

  1. Skapa en ny målfil
  2. Kopiera allt från den första filen utom den sista FF
  3. Kopiera två byte FE 01 för att indikera början av den andra databasen
  4. OBS:Om du är säker på att de två databaserna inte har dubbletter av nycklar och du vill kombinera dem till en enda databas, hoppar du helt enkelt över de två byten FE 01 som nämns ovan.
  5. Från den andra filen, hoppa över de första 11 byten - d.v.s. hoppa över REDIS000x FE 00
  6. Kopiera över resten av den andra filen, inklusive den sista byten FF

Du kan nu kopiera denna nya dump.rdb till lämplig katalog i redis och starta om.

Om du är intresserad, här är fullständig dokumentation av redis dump-filformat, men du behöver inte förstå allt för detta enkla användningsfall.



  1. MongoDB:Hur får man en distinkt lista över underdokumentfältvärden?

  2. Redis vs Service Bus för pub/underscenario

  3. django:redis:CommandError:Du har inte ställt in ASGI_APPLICATION, som behövs för att köra servern

  4. 3 sätt att returnera distinkta värden i MongoDB