【发布时间】:2017-01-21 19:22:42
【问题描述】:
我有一个相当大的数据库(5 个数据库,每个数据库大约有一百万个键),每个键都有环境命名空间。例如:"datamine::production::crosswalk==foobar"
我需要将我的开发环境与从生产 RDB 快照复制的数据同步。
所以我要做的是批量重命名每个键,将命名空间从datamine::production 更改为datamine::development。有没有好的方法来实现这一点?
到目前为止我已经尝试过什么
-
keys "datamine::production*"的 redis-cli 命令,通过管道传输到 sed,然后返回到redis-cli。这需要很长时间,并且由于某种原因在许多键上炸弹(偶尔在同一行中组合几个)。我希望有更好的选择。 -
Perl 搜索/替换 .rdb 文件。我的本地 redis-server flat 拒绝加载修改后的 RDB。
【问题讨论】:
-
我会选择“获取所有密钥并将它们扔给 RENAME 命令”。只有我会使用 SCAN 而不是 KEYS (更有效)。另外,我会使用 ruby 而不是 sed
-
好的,我要为此创建一个 ruby 脚本,我会把它放在这里供全世界使用......(除非有人想打败我!)跨度>
标签: redis