学习springboot的时候,关于redis乱码的解决:
在我们没有自定义RedisCacheManager时,进行缓存的时候存到redis里面的都是spring默认的Serializer;
RedisTemplate默认使用的是JdkSerializationRedisSerializer,StringRedisTemplate默认使用的是StringRedisSerializer。
所以 我们要自定义RedisCachemanage:
@Bean
public RedisCacheManager empRedisCacheManage(RedisConnectionFactory factory){
StringRedisSerializer redisSerializer = new StringRedisSerializer();
Jackson2JsonRedisSerializer<Employee> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Employee.class);
RedisCacheConfiguration configuration = RedisCacheConfiguration
.defaultCacheConfig().entryTtl(Duration.ofSeconds(1800))
.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(redisSerializer))
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerializer))
.disableCachingNullValues();
RedisCacheManager cacheManager = RedisCacheManager.builder(factory)
.cacheDefaults(configuration)
.build();
return cacheManager;
}
这是springboot2.X以上的时候这样写的;