Springboot cache manager+redisson
1.开启缓存@EnableCaching
2.配置CacheManager,修改使用redis作为缓存数据库(提前准备好redisson客户端)
@Configuration
@EnableCaching
public class SpringCacheConfig {
@Bean
@Primary
public CacheManager cacheManager(@Autowired final RedissonClient redissonClient) {
RedissonSpringCacheManager manager = new RedissonSpringCacheManager(redissonClient);
//最大存活半分钟
final Long max_live_time = Duration.ofSeconds(30).toMillis();
//最大闲置10秒就被清除
final Long max_idle_time = Duration.ofSeconds(10).toMillis();
final Integer max_size = 5 * 1000;
CacheConfig defaultConfig = new CacheConfig(max_live_time, max_idle_time);
defaultConfig.setMaxSize(max_size);
manager.setConfig(new HashMap<String, CacheConfig>() {{
put("app", defaultConfig);
put("...", defaultConfig);
}});
manager.setCodec(new JsonJacksonCodec());
return manager;
}
}
3.使用示例
@Cacheable(value = "app", key = "#id")
public ApiResult<AppResp> detail(final String id) {
//...
return ApiResult.ok(appDTO);
}
@CacheEvict(value = "app", key = "#id")
public ApiResult<Void> remove(final String id) {
//在对缓存产生影响的方法中将缓存失效
}
@CachePut(value = "app", key = "#dto.id")
public ApiResult<AppResp> save(AppReq dto) {
//在对缓存产生影响的方法中将缓存失效并将结果重新放回缓存区
return ApiResult.ok(appDTO);
}

浙公网安备 33010602011771号