sql >> Database >  >> NoSQL >> Redis

Combineer twee Redis-instanties in één instantie met twee dbs

BEWERKEN

Dit antwoord is niet langer correct voor nieuwere versies van redis. Het antwoord verlaten om historische redenen.

Als je een beetje met binaire bestanden wilt spelen, kun je de twee dump.rdb-bestanden eenvoudig combineren tot één.

Aannames:

  1. Elke dump heeft slechts een enkele database - de standaarddatabase
  2. U gebruikt Redis 2.4.x en daarom is de dumpversie 2 of 3

Als u het bestand in een hex-editor opent, is dit het formaat van het RDB-bestand -

REDIS000x FE 00 <actual data > FF

Hier -

  • 000x is het rdb-versienummer. In jouw geval zal het hoogstwaarschijnlijk 0002 of 0003 zijn
  • FE is de databasekiezer, en 00 is het databasenummer
  • <actual data> is de sleutel-waardeparen in de huidige database. Je kunt dit behandelen als een binaire blob voor je huidige doel.
  • FF is de laatste byte in het bestand en geeft het einde van het rdb-bestand aan

Dus om de twee rdb-bestanden samen te voegen, doe je het volgende -

  1. Maak een nieuw doelbestand
  2. Kopieer alles van het eerste bestand behalve de laatste FF
  3. Kopieer twee bytes FE 01 om het begin van de tweede database aan te geven
  4. OPMERKING:Als u zeker weet dat de twee databases geen dubbele sleutels hebben, en u wilt ze combineren in een enkele database, sla dan gewoon de twee bytes over FE 01 hierboven vermeld.
  5. Sla uit het tweede bestand de eerste 11 bytes over - d.w.z. sla REDIS000x FE 00 over
  6. Kopieer de rest van het tweede bestand, inclusief de laatste byte FF

U kunt nu deze nieuwe dump.rdb naar de juiste map in redis kopiëren en opnieuw opstarten.

Als u geïnteresseerd bent, vindt u hier de volledige documentatie van het redis dump-bestandsformaat, maar u hoeft niet alles te begrijpen voor dit eenvoudige gebruik.



  1. Afhandeling van tijdelijke netwerkfouten met StackExchange.Redis

  2. Hoe kan ik wachten tot een docker-container operationeel is?

  3. Wat is het nut van REDIS in ELK-stack?

  4. Hoe de mongodb-server op Windows te stoppen?