Redis
 sql >> Base de Dados >  >> NoSQL >> Redis

Combine duas instâncias do Redis em uma única instância com dois dbs

EDITAR


Esta resposta não é mais precisa para versões mais recentes do redis. Deixando a resposta por razões históricas.

Se você estiver disposto a brincar um pouco com arquivos binários, você pode facilmente combinar os dois arquivos dump.rdb em um.

Suposições :
  1. Cada dump tem apenas um único banco de dados - o banco de dados padrão
  2. Você está usando o Redis 2.4.x e, portanto, a versão de despejo é 2 ou 3

Se você abrir o arquivo em um editor hexadecimal, este é o formato do arquivo RDB -

REDIS000x FE 00 <actual data > FF

Aqui -
  • 000x é o número da versão rdb. Provavelmente será 0002 ou 0003 no seu caso
  • FE é o seletor de banco de dados e 00 é o número do banco de dados
  • <actual data> são os pares chave-valor no banco de dados atual. Você pode tratar isso como um blob binário para sua finalidade atual.
  • FF é o último byte no arquivo e indica o final do arquivo rdb

Então, para mesclar os dois arquivos rdb, faça o seguinte -
  1. Criar um novo arquivo de destino
  2. Copie tudo do primeiro arquivo, exceto o último FF
  3. Copiar dois bytes FE 01 para indicar o início do segundo banco de dados
  4. OBSERVAÇÃO:Se você tem certeza de que os dois bancos de dados não têm chaves duplicadas e deseja combiná-los em um único banco de dados, basta pular os dois bytes FE 01 mencionado acima.
  5. No segundo arquivo, pule os primeiros 11 bytes - ou seja, pule REDIS000x FE 00
  6. Copie o restante do segundo arquivo, incluindo o último byte FF

Agora você pode copiar esse novo dump.rdb para o diretório apropriado no redis e reiniciar.

Se você estiver interessado, aqui está a documentação completa do formato de arquivo redis dump, mas você não precisa entender tudo para este caso de uso simples.