将整个Redis数据库重命名或复制到另一个数据库?

时间:2014-09-20 00:28:52

标签: redis

我有一个应用程序从Redis数据库(DB1)获取所有数据,该数据库每小时由外部进程更新。在此更新期间,Redis中的所有数据都将被替换。

为了避免在更新时主应用程序出现任何错误,我考虑让updater进程写入辅助Redis数据库(DB2),并在完成后,将该数据库与应用程序正在使用的数据库一起切换。

我没有找到重命名或复制整个Redis数据库的方法,所以我能想到的唯一方法是从DB1中擦除所有键,而不是使用MOVE来保存DB2中的所有新键。 DB1。

有没有更好的方法来实现这一目标?

1 个答案:

答案 0 :(得分:1)

为什么不简单地使用DB2 SLAVEOF DB1,使用INFO轮询它并检查 master_sync_in_progress:0?

当您即将对DB1执行更新时,请在DB2上执行SLAVEOF NO ONE(中断复制)。在客户端访问DB2上的静态(旧)数据时,在DB1上执行更新;然后在DB1上完成更新后重新启动。