我们序列化了以下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数据对象时,哪种方法是避免此类向后兼容性问题的最佳做法?感谢。
答案 0 :(得分:1)
我认为您可以通过配置JSON库来修复它
如果您使用的是Jackson library,则可以选择使用
忽略未知属性mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
如果您正在使用gson库,您可以使用它作为版本的酷功能,通过使用@Version注释注释您的Java类,它可以让您灵活地拥有两个不同版本的JSON co - 一起存在
希望这有帮助