Redis默认的CacheManager 使用的是jdk序列化的方式存储对象,导致缓存后的效果是这样我们凡人看不懂的二进制码:(ps:需要让对象所代表类实现序列化接口,不然报错500)
如果想要用json的形式来存储数据,只需要自己给容器注入自己写的CacheManager:(注:加入了该bean之后,对象所代表类不需要实现序列化接口)
@Bean
public CacheManager cacheManager(RedisConnectionFactory factory){
RedisCacheConfiguration cacheConfiguration = RedisCacheConfiguration.defaultCacheConfig()
.entryTtl(Duration.ofDays(1))
.disableCachingNullValues()
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer()));
return RedisCacheManager.builder(factory).cacheDefaults(cacheConfiguration).build();
}
然后在调用controller的查询等方法,发现redis库中的数据已经变成了json
很完美!!!!!!!!!!!
注意:这是springBoot2.x的方式,相比较springBoot1.x 真的要简单很多很多,因为springboot1.x 要给每一个要存储的对象单独写RedisTemplate,并还要单独的写cacheManager.所以及其的麻烦,反正现在也用不到spring1.x了,所以我们还是佛系一点。