sql >> データベース >  >> NoSQL >> Redis

2つのRedisインスタンスを2つのデータベースを持つ単一のインスタンスに結合します

    編集

    この答えは、新しいバージョンのredisでは正確ではなくなりました。歴史的な理由で答えを残します。

    バイナリファイルを少し試してみたい場合は、2つのdump.rdbファイルを1つに簡単に組み合わせることができます。

    前提条件:

    1. 各ダンプには、デフォルトのデータベースであるデータベースが1つだけあります
    2. Redis 2.4.xを使用しているため、ダンプバージョンは2または3のいずれかです

    16進エディタでファイルを開くと、これはRDBファイルの形式です-

    REDIS000x FE 00 <actual data > FF

    ここで-

    • 000x rdbのバージョン番号です。あなたの場合は、おそらく0002または0003になります
    • FE はデータベースセレクターであり、00 データベース番号です
    • <actual data> 現在のデータベースのキーと値のペアです。これは、現在の目的ではバイナリブロブとして扱うことができます。
    • FF はファイルの最後のバイトであり、rdbファイルの終わりを示します

    したがって、2つのrdbファイルをマージするには、次のようにします-

    1. 新しい宛先ファイルを作成します
    2. 最後のFFを除く最初のファイルからすべてをコピーします
    3. 2バイトをコピーするFE 01 2番目のデータベースの開始を示す
    4. 注:2つのデータベースに重複するキーがないことが確実で、それらを1つのデータベースに結合する場合は、2バイトのFE 01をスキップしてください。 上記。
    5. 2番目のファイルから、最初の11バイトをスキップします。つまり、REDIS000x FE 00をスキップします。
    6. 最後のバイトを含む2番目のファイルの残りの部分をコピーしますFF

    これで、この新しいdump.rdbをredisの適切なディレクトリにコピーして再起動できます。

    興味のある方は、redisダンプファイル形式の完全なドキュメントをご覧ください。ただし、この単純な使用例では、すべてを理解する必要はありません。



    1. マングース集計クエリはJest/Mockgooseテストで失敗し、他の場所で機能します

    2. Springデータの一致とフィルターのネストされた配列

    3. mongodbドキュメントの平均値を計算します

    4. PythonでRedis接続プールを使用する正しい方法