SpringCache介绍

SpringCache是Spring提供的缓存框架。提供了基于注解的缓存功能。

SpringCache提供了一层抽象,底层可以切换不同的缓存实现(只需要导入不同的Jar包即可),如EHCache,Caffeine,Redis。

 

2个重要依赖已经导入:

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

 

注解使用:

1 在启动类上加@EnableCaching

2.1 @CachePut标签

 在controller层的UserController下的save方法上写入如下的代码:

@PostMapping
@CachePut(cacheNames="userCache",key="#user.id") //如果使用spring Cache缓存数据,key的生成:userCache::1。user是从参数取到的。
//@CachePut(cacheNames="userCache",key="#result.id") //result是从返回值return取到的
//@CachePut(cacheNames="userCache",key="#p0.id")
//@CachePut(cacheNames="userCache",key="#a0.id")
//@CachePut(cacheNames="userCache",key="#root.args[0].id")
public User save(@RequestBody User user){
    userMapper.insert(user);
    return user;
}

 当对数据进行数据入库时自动存入redis缓存

注意key="#result.id"中的result取的是返回值返回的那个结果。 key="#user.id"的user取的是传入的参数。p0,a0,root.args[0]表示取的都是第1个参数。

2.2 @Cacheable(cacheNames="userCache",key="#id")

在方法上加入@Cacheable:方法执行时,会先查询是否有缓存,如果有,直接调用缓存;如果没有,将sql查询出来的数据存入缓存

2.3@CacheEvict(cacheNames = "userCache",key="#id") //key的形式 userCache::10

 @CacheEvict(cacheNames="userCache",allEntries = true)

在方法上加入@CacheEvict:将一条或多条数据从缓存中删除

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/802731.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

肿瘤微生态研究利器——5R 16S rDNA测序

肿瘤微生物组&#xff08;Tumor Microbiome&#xff09;是肿瘤微环境中不可或缺的成员&#xff0c;肿瘤内微生物群通过多种机制影响肿瘤发展&#xff0c;在不同类型的肿瘤中&#xff0c;肿瘤内微生物群的组成和丰度具有高度异质性。由于它们的低生物量和其他障碍&#xff0c;全…

Web常见漏洞之po解

暴力破解 概述应用场景实验工具实训准备实训开始四种模式 验证码绕过前端验证码验证码有存活周期 概述 暴力破解是Web漏洞里常见的一种渗透方式&#xff0c;攻击者会试图通过尝试各种可能的用户名和密码组合来猜测密码或密钥&#xff0c;直到猜对为止123。攻击者会经常使用自动…

使用base64通用文件上传

编写一个上传文件的组件 tuku,点击图片上传后使用FileReader异步读取文件的内容&#xff0c;读取完成后获得文件名和base64码&#xff0c;调用后端uploadApi,传入姓名和base64文件信息&#xff0c;后端存入nginx中&#xff0c;用于访问 tuku.ts组件代码&#xff1a; <templa…

win10删除鼠标右键选项

鼠标右键菜单时&#xff0c;发现里面的选项特别多&#xff0c;找一下属性&#xff0c;半天找不到。删除一些不常用的选项&#xff0c;让右键菜单变得干净整洁。 1、按下键盘上的“winR”组合按键&#xff0c;调出“运行”对话框&#xff0c;输入“regedit”命令&#xff0c;点击…

mybatisPlus和mybatis的版本冲突问题、若依换成MP、解决git无法推送、使用若依框架的swagger、以后再遇到团队项目应该怎么做。

20240716 一. mybatisPlus和mybatis的版本冲突问题1. 使用前的准备2. 我遇到了一个很严重的问题。3. 解决问题&#xff0c;好吧也没解决&#xff0c;发现问题&#xff01;&#xff01; 二、该死的git&#xff01;&#xff01;&#xff01;&#xff01;1. 解决无法在idea中使用g…

2.RabbitMQ相关概念

介绍 RabbitMQ是一个消息中间件&#xff0c;接受并转发消息。它接收、存储和转发消息数据。 四大核心概念&#xff1a; 1.生产者 产生数据发送消息的程序是生产者。 2.消费者 3.队列 每一个队列对应一个消费者。 如果两个消费者对应同一个队列&#xff0c;那么队列中的…

R绘制Venn图及其变换

我自己在用R做各种分析时有不少需要反复用到的基础功能&#xff0c;比如一些简单的统计呀&#xff0c;画一些简单的图等等&#xff0c;虽说具体实现的代码也不麻烦&#xff0c;但还是不太想每次用的时候去找之前的代码。 索性将常用的各种函数整成了一个包&#xff1a;pcutils…

深度刨析程序中的指针

前面我们已经学习过了指针的一下性质&#xff1a; 指针就是个变量&#xff0c;用来存放地址&#xff0c;地址唯一标识的一块内存空间指针的大小是固定的4/8个字节&#xff08;32位平台/64位平台&#xff09;指针是有类型&#xff0c;指针的类型决定了指针的加减整数的步长&…

Pr 2024下载安装,Adobe Premiere pro2024剪辑软件下载合集获取

Premiere Pro 2023中文版简称Pr&#xff0c;pr2023是一款视频编辑软件。 pr 2023不仅可以帮助用户对各种视频进行剪辑、旋转、分割、合并、字幕添加、背景音乐等基础的处理&#xff0c;还能帮助用户进行视频颜色校正、颜色分级、稳定镜头、调整层、更改片段的持续时间和速度、效…

进程通信(3): System V IPC

System IPC包括System V消息队列&#xff0c;System V信号量&#xff0c;System V共享内存区。 System V IPC使用一个key&#xff08;key_t&#xff09;作为他们名字&#xff0c;这个值由ftok函数通过路径名和一个id生成。 客户和服务器通过在路径名和id达成一致&#xff0c;双…

SpringCloud教程 | 第十篇: 读取Nacos的配置(失败情况2)

参考&#xff1a;SpringCloud搭建Nacos配置中心_springcloud nacos maven-CSDN博客 解决了pom.xml的依赖冲突后&#xff0c;在启动服务时&#xff0c;报错了&#xff0c;并且自动停止了。 2024-07-17 11:13:03.597 ERROR [com.alibaba.nacos.client.remote.worker] com.alibab…

在 Windows 平台搭建 MQTT 服务

一、引言 出于稳定性、可靠性、成本等多方面的考虑&#xff0c;众多 MQTT 服务实现更倾向于选择拥有丰富开源生态系统的 Linux 环境&#xff0c;Windows 平台上可选的 MQTT 服务相对有限。NanoMQ 是用于物联网边缘的超轻量级 MQTT 消息服务器&#xff0c;有着强大的跨平台和可…

超详细信息收集篇

1 域名信息收集 1.1 域名是什么 域名&#xff08;英语&#xff1a;Domain Name&#xff09;&#xff0c;又称网域&#xff0c;是由一串用点分隔的名字组成的 Internet 上某一台 计算机 或计算机组的名称&#xff0c;用于在数据传输时对计算机的定位标识&#xff08;有时也指地…

监控系统怎样做?

监控类型自底向上分为资源监控、服务监控和业务监控。希望打造公司级的监控系统最好的时机是系统规划时&#xff0c;如果把监控设计往后放&#xff0c;将会面临一个巨大的难题&#xff1a;推行和现有不兼容的规范。 三种监控类型 资源监控 这个相对简单&#xff0c;随着k8s的兴…

【深度学习】BeautyGAN: 美妆,化妆,人脸美妆

https://www.sysu-hcp.net/userfiles/files/2021/03/01/3327b564380f20c9.pdf 【深度学习】BeautyGAN: Instance-level Facial Makeup Transfer with Deep Generative Adversarial Network BeautyGAN: Instance-level Facial Makeup Transfer with Deep Generative Adversaria…

嵌入式物联网在教育行业的应用——案例分析

作者主页: 知孤云出岫 嵌入式物联网在教育行业的应用——案例分析 目录 作者主页:嵌入式物联网在教育行业的应用——案例分析一、引言二、智能教室&#xff1a;环境监测系统1. 硬件需求2. 电路连接3. 代码实现 三、个性化学习&#xff1a;智能学习平台1. 数据处理与分析2. 代…

下载仓颉sdk安装时遇到“无法运行”问题

图1. 社区地址&#xff1a;GitCode - 全球开发者的开源社区,开源代码托管平台 在GitCode社区中下载Cangjie-0.53.4-windows_x64的sdk后&#xff0c;双击安装时遇到“此应用无法在你的电脑上运行的问题” 经过反复排查后&#xff0c;确定是sdk直接下载有问题&#xff1b;‘需要…

Android Studio 汉化

下载地址&#xff1a;https://plugins.jetbrains.com/plugin/13710-chinese-simplified-language-pack----/versions/stable 下载完zpi包之后&#xff0c;进入&#xff1a;设置 -> 插件 导入即可。 注&#xff1a; 汉化包需要与 Android Studio 版本对应。

Matlab|基于蒙特卡洛法的电动汽车充电负荷计算

目录 1 主要内容 2 部分代码 3 程序结果 4 下载链接 1 主要内容 该程序方法复现《V2G 模式下含分布式能源的配电网优化运行研究》第二章电动汽车无序充电模型&#xff0c;按照文章《V2G 模式下基于复杂网络的电动汽车有序充电策略》分析思路研究了不同数量电动汽车接入情况…

Jetpack Compose学习记录(一)

目录 前言控件实时预览Modifierremember状态提升 前言 学了一段时间的Compose&#xff0c;不得不说声明式UI比原生的开发效率快很多&#xff0c;而且Compose也是Google现在主推的开发模式&#xff0c;可以动态化地更改ui&#xff0c;相比于databinding对数据和布局进行绑定。C…