springboot 整合redis 遇到取出對象爲空

場景:我是出現在多系統對同一個redis取值,簡單點就是A系統存了upi對象,B系統取upi對象。取不到了返回空。當時是一點錯都沒有心中一萬個草擬嗎

解決方案:代碼實例化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 所以懂了吧

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章