Redis中的序列化

Redis中的序列化为什么要序列化:序列化最终的目的是为了对象可以跨平台存储,和进行网络传输,凡是需要进行“跨平台存储”和”网络传输”的数据,都需要进行序列化。

RedisTemplate默认使用的是JdkSerializationRedisSerializer

StringRedisTemplate默认使用的是StringRedisSerializer

Spring Data JPA为我们提供了下面的Serializer:

1 . GenericToStringSerializer

2 . Jackson2 JsonRedisSerializer

3.JacksonJsonRedisSerializer

4 . JdkSerializationRedisSerializer

5 . OxmSerializer

6 . StringRedisSerializer

序列化方式对比:

JdkSerializationRedisSerializer :

使用JDK提供的序列化功能。

优点是反序列化时不需要提供类型信息( class ),

但缺点是需要实现Serializable接口,

还有序列化后的结果非常庞大,是JSON格式的5倍左右,

这样就会消耗redis服务器的大量内存。

Jackson2 JsonRedisSerializer:

使用Jackson库将对象序列化为JSON字符串。

优点是速度快,序列化后的字符串短小精悍,不需要实现Serializable接口。

但缺点也非常致命,那就是此类的构造函数中有一个类型参数,

必须提供要序列化对象的类型信息( .class对象)。

通过查看源代码,发现其只在反序列化过程中用到了类型信息。

你可能感兴趣的:(redis)