跳转到主要内容

从 Redis 或 KeyDB 迁移

KeyDB 始终与 Redis API 和协议完全兼容。因此,从 Redis 迁移到 KeyDB 非常简单,与您预期的 Redis 到 Redis 场景中的迁移类似。

KeyDB 与此处列出的所有 Redis 客户端兼容,因此这应该不成问题。只需像使用 Redis 一样使用您的客户端即可。

本文档将讨论从 Redis 迁移到 KeyDB 以及反向迁移。在每种情况下,方法都是相似的。我们将针对每种情况探讨离线迁移和在线迁移。

创建快照#

使用 SAVEBGSAVE,您可以为数据库创建一个 RDB 备份文件。如果您在生产环境中进行保存且不希望有任何停机时间,建议使用 BGSAVE 以避免阻塞客户端,因为 SAVE 是同步执行的。

dump.rdb 文件保存在您的 redis/keydb 工作目录中。

如果您之前使用的是 Redis,现在可以启动 KeyDB 开源版,并指向您创建的 .rdb 文件(在 .conf 中指定 'dir')。您也可以重用之前的 redis.conf 文件,并附加任何您希望使用的 keydb.conf 中的新配置选项。

如果您在同一台机器上使用相同的 .conf 文件进行迁移,您可能需要使用 SHUTDOWN 命令,因为如果使用相同的配置/相同的端口,您需要关闭旧节点。

例如

$ redis-cli>6379: bgsave
$ redis-cli>6379: shutdown
$ keydb-server /path/to/redis.conf

此方法可能会导致短暂的停机时间,具体取决于您如何切换以及您是使用同一台机器还是不同的服务器。如果您在切换过程中要求零停机或零数据丢失,您可以使用副本进行在线切换。

使用副本#

在一个实时系统上,如果您想要无缝切换,可以简单地为您希望迁移的服务器创建一个副本节点,然后将该副本提升为主节点。请参阅 replicaof 命令参考,或此处对副本的进一步解释。

$ keydb-cli>6379: replicaof redis_node_ipaddress redis_node_port
$ keydb-cli>6379: replicaof no one

在副本同步后,您可以通过 keydb-cli 或 redis-cli 使用 REPLICAOF NO ONE 命令将其提升为主节点。这是一个简化版本,有关创建和提升副本节点的更多详细信息,请参阅这篇关于复制的文档

其他方法#

如果适合您的需求,您也可以使用 DUMPRESTORE,但通常在大多数情况下,上述方法更受青睐。

从 KeyDB 迁移到 Redis#

过程与上述相同,但如果您启用了任何 KeyDB 特有的配置参数,您应该在迁移回 Redis 之前禁用它们,因为这些配置参数将不被识别。如果您使用了像 EXPIREMEMBER 这样 KeyDB 独有的命令,您可能希望在迁移前移除它们。

另外请记住,由于潜在的性能下降,当迁移回 Redis 时,您可能需要一台或多台更大的机器或集群。建议进行一些基准测试,以确保新实例能够处理负载,因为 Redis 是单线程的,而您可能在 KeyDB 中使用了 2-16 个线程。