天天看點

Springboot 中 Redis緩存使用 @Cacheable不生效的原因,以及@Cacheable 的一些注意點

Springboot 中 Redis緩存使用 @Cacheable不生效的原因,以及@Cacheable 的一些注意點

1、有如下代碼
// get 方法調用了 stockGive 方法,stockGive 方法使用了緩存
    // 但是每次執行get 方法的時候,緩存都沒有生成,也就是緩存沒有被建立
    public void get(){
        stockGive(0L);
    }

    @Override
    @Cacheable(value = CacheConfig.COMMON, key = "'stock/give'+#memberId")
    public List> stockGive(Long memberId) {
        // do something
    }
      
2、為什麼緩存沒有被正常建立

因為@Cacheable 是使用AOP 代理實作的 ,通過建立内部類來代理緩存方法,這樣就會導緻一個問題,類内部的方法調用類内部的緩存方法不會走代理,不會走代理,就不能正常建立緩存,是以每次都需要去調用資料庫。

3、@Cacheable 的一些注意點

繼續閱讀