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);
    }
posted @   0更新  阅读(509)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
点击右上角即可分享
微信分享提示