redis存取数据流

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啥的 , 博大精深 …

©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页