解决方案:
代码实例化redisTemplent的时候讲序列化类型改成存储时的序列化类型。
redisTemplate.setKeySerializer(new StringRedisSerializer()); redisTemplate.setValueSerializer(new StringRedisSerializer());
没错我们的两个系统架构不一样,系统从传统的springmvc向springboot走。
springboot是好东西,好到觉得它是万能的。实际是各种坑搞的我所以差点放弃他,其实还是自己没吃透。
犯错过程:我们原有项目的redisTemplate是这样配置的,没错用的是spring.data.redis的stringRedisSerializer
<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate"> <property name="connectionFactory" ref="jedisConnectionFactory" /> <!-- 防止出现序列值 --> <property name="keySerializer"> <bean class="org.springframework.data.redis.serializer.StringRedisSerializer" /> </property> <property name="valueSerializer"> <bean class="org.springframework.data.redis.serializer.StringRedisSerializer" /> </property> <property name="hashKeySerializer"> <bean class="org.springframework.data.redis.serializer.StringRedisSerializer" /> </property> <property name="hashValueSerializer"> <bean class="org.springframework.data.redis.serializer.StringRedisSerializer" /> </property> </bean>
最后整体解释一下:这个问题其实和springboot和redis没有太大关系,主要是负责序列化和反序列化的东东的是一个。没错就是pring.data.redis的stringRedisSerializer ,顺便说一句不配置的话默认用的是java自己的java.io.Serializable 所以懂了吧