问题

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: Failed to deserialize payload的更多相关文章

  1. RedisTemplate SerializationFailedException: Failed to deserialize payload 异常解决

    问题描述: 使用RedisTemplate(spring-data-redis )进行redis操作的封装 , 现有一个incr的key , 当调用incr后返回值一切正常, 当对此key进行get调 ...

  2. support.SerializationFailedException: Failed to deserialize payload.

    support.SerializationFailedException: Failed to deserialize payload. Is the byte array a result of c ...

  3. 反序列化失败Failed to deserialize --- local class incompatible: stream classdesc serialVersionUID

    反序列化失败: java.lang.IllegalStateException: Failed to execute CommandLineRunner at org.springframework. ...

  4. shiro使用redis作为缓存,出现要清除缓存时报错 java.lang.Exception: Failed to deserialize at org.crazycake.shiro.SerializeUtils.deserialize(SerializeUtils.java:41) ~[shiro-redis-2.4.2.1-RELEASE.jar:na]

    shiro使用redis作为缓存,出现要清除缓存时报错 java.lang.Exception: Failed to deserialize at org.crazycake.shiro.Serial ...

  5. Browser Link: Failed to deserialize JSON in Browser Link call

    问题 VS2013中调试程序发现,在浏览器控制台输出如下截图代码:

  6. 【.NET】Browser Link: Failed to deserialize JSON in Browser Link call

    问题 VS2013中调试程序发现,在浏览器控制台输出如下截图代码:

  7. RedisTemplate

    Spring Boot中Jedis几个api返回值的确认 @RequestMapping("/del/{key}") public String del(@PathVariable ...

  8. redis序列化异常------------org.springframework.data.redis.serializer.SerializationException

    异常信息; org.springframework.data.redis.serializer.SerializationException: Cannot deserialize; nested e ...

  9. easyPOI导出excel报错

    http-nio--exec- at :: - excel cell export error ,data is :com.jn.ssr.superrescue.web.qc.dto.Automati ...

随机推荐

  1. “随手记”开发记录day13

    今天继续对我们的项目进行更改. 今天我们需要做的是增加“修改”功能.对于已经添加的记账记录,长按可以进行修改和删除的操作. 但是今天并没有完成……

  2. 学习 Python,这 22 个包怎能不掌握?

    如今全球各个行业内 Python 的使用状况怎么样呢? 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做案例的人,却不知道如何去 ...

  3. 标星7000+,这个 Python 艺术二维码生成器厉害了!

    微信二维码,相信大家也并不陌生,为了生成美观的二维码,许多用户都会利用一些二维码生成工具. 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手 ...

  4. PXE安装与配置

    PXE 安装与配置 实验环境 VMware Fusion 虚拟机 node1有两块网卡, ens33(172.100.16.10)-->bridge, ens37-->vmnet4(192 ...

  5. image classification backbone 汇总分析

    下面是一个list,可以详细看一下 image_classification = [['name','top1_acc','top5_acc','size'],['FixEfficientNet-L2 ...

  6. Vuex mapGetter的基本使用

    getter相当于Vuex中的计算属性 对 state 做处理再返回 mapGetters 把 Store 中的 getters 映射到组件中的计算属性中 Store文件 import Vue fro ...

  7. MyKTV系统项目的感想

    不粉身碎骨,何以脱胎换骨! 3月11号,我们迎来S1的尾巴.这期间有温暖,默契,有项目.一切刚刚好.刚刚正式接到KTV这个微微型的项目的时候,还是很害怕的,虽然老师在前两天就已经提到也讲到,KTV系统 ...

  8. CSS动画实例:旋转的圆角正方形

    在页面中放置一个类名为container的层作为效果呈现容器,在该层中再定义十个名为shape的层层嵌套的子层,HTML代码描述如下: <div class="container&qu ...

  9. SQL Server 异常代码处理

    SQL Server使用TRY...CATCH 结构实现TSQL语句的错误处理,TRY命令负责监控语句执行的情况,如果有TSQL语句发生异常,并且严重级别(Severity Level)大于10,并且 ...

  10. Java引用类型之软引用(1)

    Java使用SoftReference来表示软引用,软引用是用来描述一些“还有用但是非必须”的对象.对于软引用关联着的对象,在JVM应用即将发生内存溢出异常之前,将会把这些软引用关联的对象列进去回收对 ...