JAVA中 redisTemplate 和 jedis的配合使用


首先項目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;
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM