使用SpringCache实现快速缓存
内容纲要

介绍

Spring Cache 是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。
其提供了一层抽象,底层可以切换不同的缓存实现,例如:

  • EHCache
  • Caffeine
  • Redis(常用)

在spring boot项目中,使用缓存技术只需在项目中导入相关缓存技术的依赖包,并在启动类上使用@EnableCaching开启缓存支持即可。例如,使用Redis作为缓存技术,只需要导入Spring data Redis的maven坐标即可。

导入maven坐标

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-cache</artifactId>
    <version>2.7.3</version>
</dependency>

常用注解

注解 说明
@EnableCaching 开启缓存注解功能,通常加在启动类上
@CachePut 将方法的返回值放到缓存中
@Cacheable 在方法执行前先查询缓存中是否有数据,如果有数据,则直接返回缓存数据;如果没有缓存数据,调用方法并将方法返回值放到缓存中
@CacheEvict 将一条或多条数据从缓存中删除

使用介绍

1.@EnableCaching加在SpringBoot启动类上,代表项目使用SpringCache进行缓存功能的实现。

2.@CachePut加在方法上,代表将方法的返回值放到缓存中,基本格式:@CachePut(cacheNames:"#{cacheNames}",key="#{key}"),生成的key键:cacheNames::key

  • #{cacheNames}:存入Redis后其键名的前半部分。
  • #{key}:存入Redis后其键名的后半部分。这里可以使用SpringEL语法动态规定后半部分键名的值,用来对键加以区分。

3.@Cacheable加在方法上,在方法执行前先查询缓存中是否有数据,如果有数据,则直接返回缓存数据;如果没有缓存数据,调用方法并将方法返回值放到缓存中,基本格式:@Cacheable(cacheNames:"#{cacheNames}",key="#{key}"),生成的key键:cacheNames::key

4.@CacheEvict加在方法上,代表将一条或多条数据从缓存中删除。

  • 删除单条数据@CacheEvict(cacheNames:"#{cacheNames}",key="#{key}")
  • 删除所有数据@CacheEvict(cacheNames:"#{cacheNames}",allEntries=true)

{key}中使用SpringEL(Spring Expression Language)案例

//样例代码
@PostMapping
@CachePut(value = "userCache", key = "#user.id")
public User save(@RequestBody User user){
    userMapper.insert(user);
    return user;
}

#{key}的写法说明如下:

  • #user.id: #user指的是方法形参的名称, id指的是userid属性 , 也就是使用userid属性作为key
  • #result.id: #result代表方法返回值,该表达式 代表以返回对象的id属性作为key。(@Cacheable注解不可用)
  • #p0.id#p0指的是方法中的第一个参数,id指的是第一个参数的id属性,也就是使用第一个参数的id属性作为key
  • #a0.id#a0指的是方法中的第一个参数,id指的是第一个参数的id属性,也就是使用第一个参数的id属性作为key
  • #root.args[0].id: #root.args[0]指的是方法中的第一个参数,id指的是第一个参数的id属性,也就是使用第一个参数的id属性作为key
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
隐藏
变装