Redis对象序列化向后兼容性

时间:2014-08-15 02:16:00

标签: java c# serialization backwards-compatibility

我们序列化了以下java实体并存储到 Redis

public class Foo {
    public String bar;
}

然后我们的应用程序 v2 将类Foo修改为:

public class Foo {
    public String bar;
    public Integer eggs;
    public Datetime happen;
}

现在,当应用程序v2投入生产时,在Redis中,存储了序列化的 Foo V1 和序列化的 Foo V2 ,并且当我们的应用程序在从Redis反序列化对象时收到异常。现在我已经破坏了向后兼容性。

当我们的应用程序因业务原因从v1升级到v2时,不允许在Redis中清理对象。

在设计Redis数据对象时,哪种方法是避免此类向后兼容性问题的最佳做法?感谢。

1 个答案:

答案 0 :(得分:1)

我认为您可以通过配置JSON库来修复它

如果您使用的是Jackson library,则可以选择使用

忽略未知属性
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

如果您正在使用gson库,您可以使用它作为版本的酷功能,通过使用@Version注释注释您的Java类,它可以让您灵活地拥有两个不同版本的JSON co - 一起存在

希望这有帮助