使用redis管理数据库迁移

时间:2017-09-13 00:07:16

标签: java redis database-migration

我正在使用Redis作为其后端的Java应用程序。随着应用程序的增长,我们已经达到了我们需要在Redis中处理迁移(类似于迁移的东西?)的程度。当然Redis是无模式的,但在任何合理大小的项目中,你不可避免地最终会在redis中实现自己的抽象。

例如,假设我们有一个像

这样的键值对
redis:6379> get myapp:user:123
"Alice"

但我们可能会在几个月后决定将抽象更改为

redis:6379> get myapp:user:123:name
"Alice"

或许我们想要保留旧的密钥格式,但是将值更改为redis哈希,或者更改为序列化的json字符串等。

问题是更改代码以创建和期望新格式的密钥很容易,但更新预先存在的数据更加困难。例如我们可以这样做,以便用

之类的东西保存新用户
redis:6379> set myapp:user:124:name Bob

然后我们会有两种不同格式的数据:

redis:6379> get myapp:user:124:name
"Bob"
redis:6379> get myapp:user:123:name
(nil)
redis:6379> get myapp:user:123
"Alice"

是否有处理此问题的最佳做法?是否有任何好的工具,或者我们是否完全以错误的方式接近这个?

0 个答案:

没有答案