RedisTemplate: Failed to deserialize payload
2019-12-13 21:08
701 查看
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
问题
org.springframework.data.redis.serializer.SerializationException: Cannot deserialize; nested exception is org.springframework.core.serializer.support.SerializationFailedException: Failed to deserialize payload. Is the byte array a result of corresponding serialization for DefaultDeserializer?; nested exception is java.io.EOFException at org.springframework.data.redis.serializer.JdkSerializationRedisSerializer.deserialize(JdkSerializationRedisSerializer.java:42) at org.springframework.data.redis.core.AbstractOperations.deserializeValue(AbstractOperations.java:274)
原因分析
在使用org.springframework.data.redis.core.RedisTemplate.boundHashOps的increment方法后,调用其entries方法反序列化时出错。 主要是因为当执行increment方法时,对于入参中的hashVal没有进行序列化,直接调用了redis方法,当获取值时,走了默认的org.springframework.data.redis.serializer.JdkSerializationRedisSerializer,反序列化失败。 解决办法就是将HashValue的序列化方法改为org.springframework.data.redis.serializer.StringRedisSerializer,问题解决!
但是也相应的引入新的问题:所有的HashValue都会受到影响,值都必须为String。所幸Redis底层存储的值都是字符串,所以也无伤大雅。
解决办法
@Configuration public class LimitRedisConfig { @Bean public RedisTemplate<Object, Object> limitRedisTemplate(RedisConnectionFactory redisConnectionFactory) { RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>(); redisTemplate.setHashValueSerializer(new StringRedisSerializer()); redisTemplate.setConnectionFactory(redisConnectionFactory); return redisTemplate; } }
相关文章推荐
- RedisTemplate SerializationFailedException: Failed to deserialize payload 异常解决
- RedisTemplate SerializationFailedException: Failed to deserialize payload 异常解决
- Cachecloud的spring接入 以及RedisTemplate SerializationFailedException: Failed to deserialize payload 异常解决
- redis 反序列化出错 :SerializationFailedException: Failed to deserialize payload
- RedisTemplate SerializationFailedException: Failed to deserialize payload 异常解决
- support.SerializationFailedException: Failed to deserialize payload.
- include(Redis.php): failed to open stream: No such file or directory
- PHP 安装 Redis 扩展:Connection to `ssl://pecl.php.net:443' failed
- org.elasticsearch.transport.TransportSerializationException: Failed to deserialize response解决方案
- Failed to retrieve paths under VSTemplate for the specified registry hive
- CentOS7 Magento 链接Redis提示:Connection to Redis failed after 2 failures
- Failed to mount component: template or render function not defined.
- Error: [$compile:tpload] Failed to load template: 错误
- Web启动错误Failed to obtain BeanInfo for class [freemarker.template.Configuration]; nested exception is
- class org.apache.ignite.IgniteCheckedException: Failed to deserialize object with given class loader
- ElasticSearch学习17_Failed to deserialize response of type [*.SearchResponse]错误原因
- 【问题及解决】Elasticsearch--Failed to deserialize exception response from stream
- BEA-000140 - Failed to deserialize statedump from server serverName with e.
- Adding Crystal Report template to BO CMC failed.
- Invalid argument during startup: Failed to open the .conf file: redis.windows.conf CWD=C:\Users\xxx