[redis][Serializer原理]DefaultSerializer requires a Serializable payload but received an object of type

本文:http://www.paymoon.com:8001/index.php/2016/12/06/redisdefaultserializer-requires-a-serializable-payload-but-received-an-object-of-type/

转载请联系作者 i@paymoon.com

先说结果:

在所使用的java bean前加上redis的serialize接口实现,如下:

事情始末:

这两天在使用redis serialize 一个java bean时,一直在报错如下:

detail:

然后查了半天也没有所以然,stackover flow说是版本不对,看了下版本也对。然后仔细看了报错信息,应该是serializable的方式不对,是不是只是继承了java的,没有实现redis的呢?

原创:http://www.paymoon.com:8001/index.php/2016/12/06/redisdefaultserializer-requires-a-serializable-payload-but-received-an-object-of-type/

转载请联系作者 i@paymoon.com

我看了下spring redis的配置

看了下redisTemplate源码:

里面我们对于bean的序列化用了这个类,也就是这一行:

我们进去JdkSerializationRedisSerializer看一下

可知继承关系如下:

JdkSerializationRedisSerializer implements RedisSerializer<Object>

并且实现了serialize和deserialize的方法。报错的根源就是deserialize的字节来源,所以我们实现RedisSerializer接口,并且重写这两个方法即可,当然,我们直接继承JdkSerializationRedisSerializer,这些steps就都省了,所以最终的处理结果就是开头的,直接继承JdkSerializationRedisSerializer。

原创:http://www.paymoon.com:8001/index.php/2016/12/06/redisdefaultserializer-requires-a-serializable-payload-but-received-an-object-of-type/

转载请联系作者 i@paymoon.com

1 thought on “[redis][Serializer原理]DefaultSerializer requires a Serializable payload but received an object of type

发表评论

电子邮件地址不会被公开。