当前位置: 首页 > news >正文

SpringBoot缓存注解使用

背景

除了 RedisTemplate 外, 自Spring3.1开始,Spring自带了对缓存的支持。我们可以直接使用Spring缓存技术将某些数据放入本机的缓存中;Spring缓存技术也可以搭配其他缓存中间件(如Redis等)进行使用,将某些数据写入到缓存中间件(缓存中间件可能在其他机器上)中。

常用缓存

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

使用

1. 添加依赖并配置redis信息

在 pom.xml 中添加依赖

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

在 application.yml 文件中添加依赖

spring:redis:host: 192.168.**.***port: ****password: ****database: 1

2. 在启动类上添加 @EnableCaching 注解

在这里插入图片描述

3. 使用缓存注解

package com.itheima.controller;@RestController
@RequestMapping("/user")
@Slf4j
public class UserController {@Autowiredprivate UserMapper userMapper;@PostMapping// 使用 @CachePut 添加缓存数据, key 的生成: userCache::user.id,例如 userCache::12@CachePut(cacheNames = "userCache", key = "#user.id")public User save(@RequestBody User user){userMapper.insert(user);return user;}@DeleteMapping// 删除指定缓存@CacheEvict(cacheNames = "userCache", key = "#id")public void deleteById(Long id){userMapper.deleteById(id);}@DeleteMapping("/delAll")// 删除所有缓存@CacheEvict(cacheNames = "userCache", allEntries = true)public void deleteAll(){userMapper.deleteAll();}@GetMapping// key 的生成: userCache::12@Cacheable(cacheNames = "userCache", key = "#id")public User getById(Long id){User user = userMapper.getById(id);return user;}}

4. 结果

这里以 @CachePut 注解为例演示结果。
向表中添加数据后可以看到成功将新用户信息添加到了缓存中。
在这里插入图片描述
缓存中信息
在这里插入图片描述

http://www.lryc.cn/news/405153.html

相关文章:

  • @RequestBody接收到的参数中如何限制List的长度?
  • Linux C语言 54-目录操作
  • Java实战中如何使用多线程(线程池)及其为什么使用?
  • kafka集群搭建-使用zookeeper
  • 【python】Numpy运行报错分析:IndexError与形状不匹配问题
  • 你有多自律就有多自由
  • Codeforces Round 959 (Div. 1 + Div. 2 ABCDEFG 题) 文字讲解+视频讲解
  • WSL2 Centos7 Docker服务启动失败怎么办?
  • 分布式锁-redisson锁重试和WatchDog机制
  • ESP8266模块(2)
  • Docker安装笔记
  • 《昇思25天学习打卡营第21天|Pix2Pix实现图像转换》
  • Python和MATLAB网络尺度结构和幂律度大型图生成式模型算法
  • 在jsPsych中使用Vue
  • 机器学习·概率论基础
  • c生万物系列(面向对象:封装)
  • 当当网数据采集:Scrapy框架的异步处理能力
  • React——useEffect和自定义useUpdateEffect
  • Hadoop大数据处理架构中ODB、DIM、DWD、DWS
  • 【刷题汇总 -- 爱丽丝的人偶、集合、最长回文子序列】
  • 基于vue3 + vite产生的 TypeError: Failed to fetch dynamically imported module
  • 批量自动添加好友,高效拓展人脉圈.
  • Web开发:一个可拖拽的模态框(HTML、CSS、JavaScript)
  • 【深度学习】fooocusapi,docker,inpainting图像
  • 算法017:二分查找
  • 谷粒商城实战笔记-37-前端基础-Vue-基本语法插件安装
  • mybatis中的缓存(一级缓存、二级缓存)
  • 实现自动化采购:食堂采购系统源码开发详解
  • linux、windows、macos清空本地DNS缓存
  • 领夹麦克风哪个品牌好,电脑麦克风哪个品牌好,热门麦克风推荐