相关配置可见前一篇 SpringBoot2.X 配置Redis
一:自定义CacheManager
@Configuration
@AutoConfigureAfter(RedisAutoConfiguration.class)
public class RedisConfig {
@Bean
public CacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {
//初始化一个RedisCacheWriter
RedisCacheWriter redisCacheWriter = RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory);
//设置CacheManager的值序列化方式为json序列化
RedisSerializer<Object> jsonSerializer = new GenericJackson2JsonRedisSerializer();
RedisSerializationContext.SerializationPair<Object> pair = RedisSerializationContext.SerializationPair
.fromSerializer(jsonSerializer);
RedisCacheConfiguration defaultCacheConfig=RedisCacheConfiguration.defaultCacheConfig()
.serializeValuesWith(pair);
//设置默认超过期时间是30秒
defaultCacheConfig.entryTtl(Duration.ofSeconds(30));
//初始化RedisCacheManager
return new RedisCacheManager(redisCacheWriter, defaultCacheConfig);
}
}
二:相关Controller
@RequestMapping("/ad/{id}")
@Cacheable(value = {"ad"})
public String getById(@PathVariable("id") Integer id){
Ad ad = adServiceImp.getById(id);
return ad.toString();
}
三:测试
地址访问:
控制台打印sql:访问数据库了
看redis客户端是否是相应对象缓存
在此地址访问:
控制台未打印sql:未访问数据库(走redi缓存了)