Spingboot自带缓存使用

缓存有多种使用方式

mybatis的缓存 标签cache application级别,

Ehcache 引入依赖,加ehcache配置,

redis引入依赖,加工具类,get/set pop/push、、、

常用的是,没有常用的,各有各偏好,各有各好处。
记录一下,使用 @Cacheable 及相关注解的使用。

第一步:启动类加上@EnableCaching

指明项目要使用缓存了。 依赖吗,使用自带的缓存没有三方的产品的话是不需要额外加依赖的。

第二步:在方法上或者类上加缓存,@Cacheable

此注解可以加在方法上,类上,接口是不可以的,直接加在serviceimpl的方法上是一般的使用方法,主要为菜单或者树形结构的结果获取。

    @Cacheable(cacheNames = "treeacl")
    @Override
    public List<AcltDTO> getAclTree() {
    
    
        List<AclEntity> acls= aclMapper.acltList();
        //------------略   
        return assetDTOS;
    }
属性的说明
  1. cacheName
  2. value
  3. key

cacheName 和value同义, 每个的cacheName是一个 单独命名空间
如果有参数 可以指明key #参数名或者 #p参数index,即可以在同一个命名空间下有多个key的缓存存在,
如果不想指明key, 也可以指明键生成策略,
不指明生成策略,只有命名空间,也会默认生成一个键,
也可以用固定字符串来指明key, 需要注意 key="‘id01’" 用单引号包裹字符串

第三步 :刷新缓存,或者删除缓存

如果修改了数据库内容,那么缓存的内容需要同步修改,那么需要再删除,修改,新建的方法上增加一下两个注解,

@CachePut 和 @CacheEvict

cacheput 作用: return的返回会将此命名空间中的同key覆盖,如果没有key相同,那么此返回的bean会put的缓存里,作为新入的缓存,
cacheEvict作用: 删除同cacheName中的缓存,如果指明key,删除该key的value,该注解有一个属性,allEntries=true 默认为false,为true的时候会将该命名空间下所有缓存清空,


spring自带的缓存,还可以结合其他三方的产品,用法还是这个用法,但需要指明cacheManager,是redis还是ehcache,如果使用三方产品,内存会优化,存取更快。

猜你喜欢

转载自blog.csdn.net/weixin_41086086/article/details/120288650