gpt4 book ai didi

redis - 将两个 Redis 实例组合成一个具有两个数据库的实例

转载 作者:IT王子 更新时间:2023-10-29 06:02:59 24 4
gpt4 key购买 nike

我有两个 Redis 实例(或两个相应的 dump.rdb 文件),我想将它们组合成一个具有两个数据库的实例,每个数据库对应一个初始实例。

我可以使用 MIGRATE 执行此操作,但它仅在 Redis 2.6.0 中可用,我当前的 Redis 服务器不支持它。

最佳答案

编辑

这个答案对于较新版本的 redis 不再准确。由于历史原因留下答案。


如果您愿意尝试使用二进制文件,您可以轻松地将两个 dump.rdb 文件合二为一。

假设:

  1. 每个转储只有一个数据库——默认数据库
  2. 您使用的是 Redis 2.4.x,因此转储版本为 2 或 3

如果在十六进制编辑器中打开文件,这是 RDB 文件的格式 -

REDIS000x FE 00 <actual data > FF

这里 -

  • 000x是rdb版本号。在您的情况下很可能是 0002 或 0003
  • FE是数据库选择器,00是数据库号
  • <actual data>是当前数据库中的键值对。您可以将其视为当前用途的二进制 blob。
  • FF是文件的最后一个字节,表示rdb文件结束

所以要合并两个 rdb 文件,请执行以下操作 -

  1. 创建一个新的目标文件
  2. 复制第一个文件的所有内容,除了最后一个 FF
  3. 复制两个字节FE 01指示第二个数据库的开始
  4. 注意:如果您确定这两个数据库没有重复键,并且您想将它们组合成一个数据库,只需跳过两个字节 FE 01如上所述。
  5. 从第二个文件开始,跳过前 11 个字节 - 即跳过 REDIS000x FE 00
  6. 复制第二个文件的其余部分,包括最后一个字节FF

您现在可以将这个新的 dump.rdb 复制到 redis 中的相应目录并重新启动。

如有兴趣,here is complete documentation of redis dump file format ,但对于这个简单的用例,您不需要了解所有内容。

关于redis - 将两个 Redis 实例组合成一个具有两个数据库的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10083432/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com