Spring Boot 缓存使用

本文介绍了如何在Spring Boot应用中使用缓存管理,包括添加Maven依赖、启用缓存注解@EnableCaching、使用@Cacheable和@CacheEvict注解进行缓存数据和清除缓存的操作。示例展示了如何通过key和condition等参数定制缓存行为。
摘要由CSDN通过智能技术生成

添加Maven依赖

 //缓存依赖
 <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-cache</artifactId>
 </dependency>

启动类开启缓存

@SpringBootApplication
@EnableCaching//开启缓存
public class CacheApplication {
    public static void main(String[] args) {
        SpringApplication.run(CacheApplication.class, args);
    }

1.启动类开启缓存功能@EnableCaching

2.@Cacheable 作用在方法上service

将方法的返回结果增加到缓存中

//cacheNames={"list","demo"} 缓存两个库名
@cacheable(cacheNames="emps",key="#root.methodName + '[' +#id+']'")
Key 是 getEmployee[2] 用spEL表达式语法

//cacheName(和value一样) 为redis中的名字,  key: #通配符  p是param参数  1是第二个参数,(下标索引从0开始)
@Cacheable(cacheNames="listTreeDataByRoleId",key="#p1")
public List<TreeData>getTreedataByRoleid(String onePname,String roleId){
}
//cacheName(和value一样) 为redis中的名字,  key: #通配符  p是param参数  1是第二个参数,(下标索引从0开始)多个参数可以直接拼接(Redis缓存按参数顺序)
@Cacheable(cacheNames="listTreeDataByRoleId1",key="#p1+#p0") //key="#p1+'_'+#p0"
public List<TreeData>getTreedataByRoleid(String onePname,String roleId){
}

//查库加入缓存,返回结果都会加入缓存
@Cacheput(value="listTreeDataByRoleId",key="#p1")

//删除缓存中的key值
@CacheEvict(value="listTreeDataByRoleId",key="#p0")
public JsonData addRoleDatas(String roleId,String datas){
}
//清除掉指定key的缓存  
@CacheEvict(value="listTreeDataByRoleId1",key="#user.userId + 'findById'")  
public void modifyUserRole(SystemUser user) {  
         System.out.println("hello andCache delete"+user.getUserId());  
}  
      
//清除掉全部缓存  
@CacheEvict(value="listTreeDataByRoleId1",allEntries=true)  
public final void setReservedUsers(String[] reservedUsers) {  
    System.out.println("hello listTreeDataByRoleId1 deleteall");  
}  

注释:

cacheNames/value :用来指定缓存组件的名字
key :缓存数据时使用的 key,可以用它来指定。默认是使用方法参数的值。(这个 key 你可以使用 spEL 表达式来编写)
keyGenerator :key 的生成器。 key 和 keyGenerator 二选一使用
cacheManager :可以用来指定缓存管理器。从哪个缓存管理器里面获取缓存。
condition :可以用来指定符合条件的情况下才缓存
unless :否定缓存。当 unless 指定的条件为 true ,方法的返回值就不会被缓存。当然你也可以获取到结果进行判断。(通过 #result 获取方法结果)
sync :是否使用异步模式。

缓存注解:

@Cache:缓存接口,定义缓存操作
@CacheManager:缓存管理器,管理各种缓存组件
@Cacheable:主要针对方法配置,能够根据方法的请求参数对其结果进行缓存
@CacheEvict:清空缓存
@CachePut:保证方法被调用,又希望结果被缓存,更新缓存
@EnableCaching:开启基于注解的缓存
keyGennerator:缓存数据时key生成策略
serialize:缓存数据时value序列化策略
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孟吶李唦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值