SpringBoot2.x使用redis緩存@Cacheable和@CacheEvict

首先應該確保項目已經成功集成了redis進行緩存管理,集成方式可參考springboot2.x集成redis進行緩存管理

使用@Cacheable

/**
     * 查詢多條數據
     *
     * @param offset 查詢起始位置
     * @param limit 查詢條數
     * @return 對象列表
     */
    @Override
    @Cacheable(value = {"imuser"},key = "'queryAllByLimit_'+#offset+'_'+#limit")
    public List<ImUser> queryAllByLimit(int offset, int limit) {
        PageHelper.startPage(offset, limit);
        QueryWrapper<ImUser> wrapper = new QueryWrapper<>();
        return imUserDao.selectList(wrapper);
    }

執行該方法後,在redis中可以看到如下
redis緩存
該方法已經存儲。

在設置緩存時,可以指定key
Spring Expression Language (SpEL) expression for computing the key dynamically.
Spring Expression Language(SpEL)表達式,用於動態計算密鑰。
這裏我用的是字符串拼接,需要注意的一點就是雙引號中套單引號進行拼接

清除特定鍵值

 @CacheEvict(value = {"imuser"},key = "'queryAllByLimit_'+#offset+'_'+#limit")

CacheEvict只能清除特定的鍵值,不能進行通配符清除,下面的寫法是無效的
@CacheEvict(value = {“imuser”},key = “‘queryAllByLimit_*’”)

上一篇文章中有個方法可以進行通配符清除

通配符刪除鍵

//僅針對這個util進行通配符清除
redisUtilService.evitCache("imuser","queryAllByLimit_*");
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章