序列化 - Redis缓存Java对象的问题
迷茫
迷茫 2017-04-17 17:34:34
0
3
453

一个java bean 我知道有两种序列化方案
1、使用Json序列化为字符串
2、使用ObjectOutputStream 序列化为byte[]

不知道各位是使用哪种方式进行序列化存储的?各有什么优缺点

我先抛砖引玉

使用Json序列化

优点:缓存数据便于查阅,都是String字符串
缺点:java bean对象修改后,之前存储的数据,反序列化时会对新增字段赋予默认值,往往会带来业务逻辑上的问题

使用ObjectOutputStream序列化

优点:可以通过serialVersionUID控制版本号,如果bean对象发生修改,反序列化不会成功,能够有效避免上面的缺点
缺点:存储结果不便于查阅

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

모든 응답(3)
巴扎黑

연재 중에 고려해야 할 문제가 많으며 이러한 문제에 대해 선택할 수 있는 직렬화 솔루션이 많이 있습니다.
그러나 시나리오에 따라 일부 문제는 무시될 수 있습니다.
여기에 좋은 테스트가 있습니다. 주제에 도움이 되기를 바랍니다: https://github.com/eishay/jvm-serializer...

Ty80

org.springframework.data.redis.serializer.JdkSerializationRedisSerializer
디폴트는 이런 직렬화인 것 같죠? 그냥 기본값을 사용하세요.

阿神

JSON의 역직렬화는 일반 컬렉션에 그다지 실용적이지 않습니다. Java 자체의 직렬화는 상대적으로 무겁고 느리기 때문에 이상적이지 않으므로 protobuf와 같은 직렬화 프레임워크를 고려해 보세요. 실제 사용에서 효과는 여전히 매우 이상적입니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿