今日学习内容:SpringBoot的缓存方案

1.SpringBoot的缓存方案

1.1 开启缓存

SpringBoot的缓存是内存中的缓存,关闭服务器就没有了,无法持久化

@EnableCaching//开启springBoot的缓存,在springBoot的启动类上添加
public class BookMallApp {
    public static void main(String[] args) {
        SpringApplication.run(BookMallApp.class,args);
    }
}

1.2 在service层定义要缓存的数据

@Cacheable(cacheNames = "bookVo")//定义这个方法开启缓存
@CachePut //可以更新缓存,key = "#id" 表示采用参数中的 id 属性作为键。当缓存中该键的值不存在时,则将返回值放入缓存;当缓存中该键的值已存在时,会更新缓存的内容。
@CacheEvict//直接根据key将缓存删除
缓存的应用场景

@Cacheable常用的属性

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

@Cacheable 常用于查询操作的方法

@CachePut:配置于函数上,能够根据参数定义条件来进行缓存,它与@Cacheable不同的是,它每次都会真实调用函数,所以主要用于数据新增和修改操作上

@CacheEvict配置于函数上,通常用在删除方法上,用来从缓存中移除相应数据。除了同@Cacheable一样的参数之外,它还有下面两个参数:
allEntries:非必需,默认为false。当为true时,会移除所有数据
beforeInvocation:非必需,默认为false,会在调用方法之后移除数据。当为true时,会在调用方法之前移除数据。

第一次查询

2023-06-09 16:38:53.234 DEBUG 16256 --- [nio-8086-exec-1] com.wn.bm.controller.BookController      : 查询耗时>>>>>877毫秒

第二次查询

2023-06-09 16:40:32.400 DEBUG 16256 --- [nio-8086-exec-4] com.wn.bm.controller.BookController      : 查询耗时>>>>>0毫秒
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值