首先項目A,也就是SpringBOOT項目中使用redisTemplate 來做REDIS的緩存時,你會發現存到REDIS里邊的KEY和VALUE,redisTemplat使用jdkSerializeable存儲二進制字節編碼
項目B中使用jedis時,存儲起來的是字符串,導致項目A要調用項目緩存的鍵值對時,獲取不到
解決方案:修改項目A的redisTemplate的序列方式
@Configuration @EnableCaching public class RedisConfig extends CachingConfigurerSupport { /** * redis模板,存儲關鍵字是字符串,值是Jdk序列化 * @param factory * @return * @Description: */ @Bean public RedisTemplate<?, ?> redisTemplate(RedisConnectionFactory factory) { RedisTemplate<?, ?> redisTemplate = new RedisTemplate<>(); redisTemplate.setConnectionFactory(factory); //key序列化方式;但是如果方法上有Long等非String類型的話,會報類型轉換錯誤; RedisSerializer<String> redisSerializer = new StringRedisSerializer();//Long類型不可以會出現異常信息; redisTemplate.setKeySerializer(redisSerializer); redisTemplate.setHashKeySerializer(redisSerializer); //默認使用JdkSerializationRedisSerializer序列化方式;會出現亂碼,改成StringRedisSerializer StringRedisSerializer stringSerializer = new StringRedisSerializer(); redisTemplate.setKeySerializer(stringSerializer); redisTemplate.setValueSerializer(stringSerializer); redisTemplate.setHashKeySerializer(stringSerializer); redisTemplate.setHashValueSerializer(stringSerializer); return redisTemplate; } }
