Redis对象序列化向后兼容
本文关键字:对象 序列化 Redis | 更新日期: 2023-09-27 18:18:01
我们序列化了以下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数据对象时,哪种方法是避免这种向后兼容性问题的最佳实践?谢谢。
我认为你可以通过配置你的JSON库来修复它
如果您正在使用Jackson库,您可以使用
选项来忽略未知属性。mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
如果你正在使用gson库你可以使用它作为版本的一个很酷的功能,通过用@Version注释你的java类它可以让你灵活地让两个不同版本的JSON共存
希望能有所帮助