sql >> Base de Datos >  >> NoSQL >> Redis

Combine dos instancias de Redis en una sola instancia con dos dbs

EDITAR

Esta respuesta ya no es precisa para las versiones más nuevas de redis. Dejando la respuesta por razones históricas.

Si está dispuesto a jugar un poco con los archivos binarios, puede combinar fácilmente los dos archivos dump.rdb en uno solo.

Suposiciones:

  1. Cada volcado tiene una única base de datos:la base de datos predeterminada
  2. Está utilizando Redis 2.4.x y, por lo tanto, la versión de volcado es 2 o 3

Si abre el archivo en un editor hexadecimal, este es el formato del archivo RDB:

REDIS000x FE 00 <actual data > FF

Aquí -

  • 000x es el número de versión de rdb. Lo más probable es que sea 0002 o 0003 en su caso
  • FE es el selector de base de datos, y 00 es el número de la base de datos
  • <actual data> son los pares clave-valor en la base de datos actual. Puede tratar esto como un blob binario para su propósito actual.
  • FF es el último byte del archivo e indica el final del archivo rdb

Entonces, para fusionar los dos archivos rdb, haga lo siguiente:

  1. Crear un nuevo archivo de destino
  2. Copie todo desde el primer archivo excepto el último FF
  3. Copia dos bytes FE 01 para indicar el inicio de la segunda base de datos
  4. NOTA:si está seguro de que las dos bases de datos no tienen claves duplicadas y desea combinarlas en una sola base de datos, simplemente omita los dos bytes FE 01 mencionado anteriormente.
  5. Desde el segundo archivo, omita los primeros 11 bytes, es decir, omita REDIS000x FE 00
  6. Copie el resto del segundo archivo, incluido el último byte FF

Ahora puede copiar este nuevo dump.rdb al directorio apropiado en redis y reiniciar.

Si está interesado, aquí encontrará la documentación completa del formato de archivo de volcado de redis, pero no es necesario que lo entienda todo para este caso de uso simple.