spring-data-redis的序列化

redis一个优点就是可以将数据写入到磁盘中。

我们知道写入磁盘的数据实际上都是以字节(0101这样的二进制数据)的形式写入的。

这意味着如果我们要将一个对象写入磁盘,就必须将这个对象序列化。

java的序列化机制可以参考这篇文章

可以看到java的反序列是否成功跟serialVersionUID有很大的关系,自动生成的UID在每次编译时就会发生变化。

如果有两个程序共享一个redis,这个时候反序列化就会出现问题。

 

spring-data-redis的序列化类有下面这几个:

1.JacksonJsonRedisSerializer: 序列化object对象为json字符串

如果需要保存对象为json的话推荐使用JacksonJsonRedisSerializer,它不仅可以将对象序列化,

还可以将对象转换为json字符串并保存到redis中,但需要和jackson配合一起使用。

用JacksonJsonRedisSerializer序列化的话,被序列化的对象不用实现Serializable接口。

Jackson是利用反射和getter和setter方法进行读取的,如果不想因为getter和setter方法来影响存储,就要使用注解来定义被序列化的对象。

Jackson序列化的结果清晰,容易阅读,而且存储字节少,速度快,推荐。

2.JdkSerializationRedisSerializer: 序列化java对象(Jackson2JsonRedisSerializer同)

用JdkSerializationRedisSerializer序列化的话,被序列化的对象必须实现Serializable接口。在存储内容时,除了属性的内容外还存了其它内容在里面,总长度长,且不容易阅读。

3,使用StringRedisSerializer序列化

一般如果key-value都是string的话,使用StringRedisSerializer就可以了

4.GenericToStringSerializer: 可以将任何对象泛化为字符串并序列化

 

参考:http://www.cnblogs.com/cuglkb/p/6895423.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值