Redis
 sql >> Database >  >> NoSQL >> Redis

Combina due istanze Redis in un'unica istanza con due dbs

MODIFICA

Questa risposta non è più accurata per le versioni più recenti di redis. Lasciando la risposta per ragioni storiche.

Se sei disposto a giocare un po' con i file binari, puoi facilmente combinare i due file dump.rdb in uno solo.

Ipotesi :

  1. Ogni dump ha un solo database:il database predefinito
  2. Stai usando Redis 2.4.x, quindi la versione del dump è 2 o 3

Se apri il file in un editor esadecimale, questo è il formato del file RDB -

REDIS000x FE 00 <actual data > FF

Qui -

  • 000x è il numero di versione rdb. Molto probabilmente sarà 0002 o 0003 nel tuo caso
  • FE è il selettore del database e 00 è il numero del database
  • <actual data> è la coppia chiave-valore nel database corrente. Puoi considerarlo come un blob binario per il tuo scopo attuale.
  • FF è l'ultimo byte nel file e indica la fine del file rdb

Quindi, per unire i due file rdb, procedi come segue:

  1. Crea un nuovo file di destinazione
  2. Copia tutto dal primo file tranne l'ultimo FF
  3. Copia due byte FE 01 per indicare l'inizio del secondo database
  4. NOTA:se sei sicuro che i due database non abbiano chiavi duplicate e desideri unirli in un unico database, salta semplicemente i due byte FE 01 sopra menzionato.
  5. Dal secondo file, salta i primi 11 byte, ovvero salta REDIS000x FE 00
  6. Copia il resto del secondo file, incluso l'ultimo byte FF

Ora puoi copiare questo nuovo dump.rdb nella directory appropriata in redis e riavviare.

Se sei interessato, ecco la documentazione completa del formato del file di dump di redis, ma non è necessario capirlo tutto per questo semplice caso d'uso.