Redis
 sql >> Base de données >  >> NoSQL >> Redis

Combinez deux instances Redis en une seule instance avec deux bases de données

MODIFIER

Cette réponse n'est plus exacte pour les nouvelles versions de redis. Laisser la réponse pour des raisons historiques.

Si vous êtes prêt à jouer un peu avec les fichiers binaires, vous pouvez facilement combiner les deux fichiers dump.rdb en un seul.

Hypothèses :

  1. Chaque vidage n'a qu'une seule base de données :la base de données par défaut
  2. Vous utilisez Redis 2.4.x, et donc la version de vidage est 2 ou 3

Si vous ouvrez le fichier dans un éditeur hexadécimal, c'est le format du fichier RDB -

REDIS000x FE 00 <actual data > FF

Ici -

  • 000x est le numéro de version rdb. Ce sera très probablement 0002 ou 0003 dans votre cas
  • FE est le sélecteur de base de données, et 00 est le numéro de la base de données
  • <actual data> est les paires clé-valeur dans la base de données actuelle. Vous pouvez traiter cela comme un blob binaire pour votre objectif actuel.
  • FF est le dernier octet du fichier et indique la fin du fichier rdb

Donc, pour fusionner les deux fichiers rdb, procédez comme suit -

  1. Créer un nouveau fichier de destination
  2. Copier tout depuis le premier fichier sauf le dernier FF
  3. Copier deux octets FE 01 pour indiquer le début de la deuxième base de données
  4. REMARQUE :Si vous êtes sûr que les deux bases de données n'ont pas de clés en double et que vous souhaitez les combiner en une seule base de données, ignorez simplement les deux octets FE 01 mentionné ci-dessus.
  5. À partir du deuxième fichier, ignorez les 11 premiers octets, c'est-à-dire ignorez REDIS000x FE 00
  6. Copiez le reste du deuxième fichier, y compris le dernier octet FF

Vous pouvez maintenant copier ce nouveau dump.rdb dans le répertoire approprié dans redis et redémarrer.

Si vous êtes intéressé, voici une documentation complète sur le format de fichier de vidage Redis, mais vous n'avez pas besoin de tout comprendre pour ce cas d'utilisation simple.