java.io.EOFException已解决 , 是spring-redis取value时的序列化问题
今天使用NoSql之redis缓存一个小小的String的值时,用java死活取不出来
把容器里配的redis的value序列化配置为Jackson版本的 , 就能自由存取value了
报错:(这图片是临时找的 , 我报错时没截图)
spring-redis报这个错的朋友 , 好好看看这个 :
完整配置:
<!-- 3 配置redisTemplate -->
<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
<!--3.1注入工厂-->
<property name="connectionFactory" ref="jedisConnectionFactory">
</property>
<!--3.2 key的序列化配置 -->
<property name="keySerializer">
<bean class="org.springframework.data.redis.serializer.StringRedisSerializer" />
</property>
<!--3.3 value序列化配置 -->
<property name="valueSerializer" ref="jackson2JsonRedisSerializer">
</bean>
<!-- json序列化 -->
<bean id="jackson2JsonRedisSerializer" class="org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer">
<constructor-arg value="java.lang.Object">
</constructor-arg>
</bean>
把上面图片中的代码看完 , 我报错时用的是下面的jdk序列化配置 , redis的String类型的value取不了
<property name="valueSerializer">
<bean class="org.springframework.data.redis.serializer.StringRedisSerializer" />
</property>
后来改成了String类型的序列化:
<property name="valueSerializer">
<bean class="org.springframework.data.redis.serializer.StringRedisSerializer" />
</property>
然后String类型的value是正常取了 , java.io.EOFException也解决 , 但这配置是不能正常取对象或集合类型的 , 最后改成了Jackson序列化:
<!--3.3 value序列化配置 -->
<property name="valueSerializer" ref="jackson2JsonRedisSerializer">
<!-- json序列化 -->
<bean id="jackson2JsonRedisSerializer" class="org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer">
<constructor-arg value="java.lang.Object">
</constructor-arg>
</bean>
然后一切都顺顺利利的了 , ok
还可以用别的序列化呢 , genic啥Jackson啥的 , 博大精深 …