Spring Cache (基础知识+瑞吉外卖项目)

Spring Cache

基本介绍

Spring Cache是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。
Spring Cache提供了一层抽象,底层可以切换不同的cache实现。具体就是通过CacheManager接口来统一不同的缓存技术。
CacheManager是Spring提供的各种缓存技术抽象接口。
针对不同的缓存技术,需要实现不同的CacheManager:
在这里插入图片描述

注解

在这里插入图片描述

入门

导入pom依赖

如果是使用基础的,我们只需要导入这个pom依赖即可。如果使用redis缓存,还需要加其他依赖。
在这里插入图片描述

在启动类上,加上注解@EnableCaching

@CachePut添加缓存

CachePut将方法返回值放入缓存,这个注解一般写在add方法上。
其中参数value表示缓存的名称,每个缓存下面可以有多个key;key缓存的key

@CachePut(value="userCache",key="#result.id"

result表示的是返回值对象;而写user表示的是参数,与参数同名!
在这里插入图片描述
这种写法默认使用的是ConcurrentMapCacheManager,缓存是基于内存的,当服务器停掉,重新启动,里边就没有数据了。

@CacheEvict清除缓存

这个注解一般写在delete;update方法上去清除缓存
@CacheEvict清除指定缓存
value缓存的名称,每个缓存名称下面可以有多个key
key缓存的key
在这里插入图片描述
在这里插入图片描述

@Cacheable先判断在存储

这个注解写在get方法上。
@Cacheable先看缓存有没有数据,如果有数据,则直接返回缓存数据;如果没有,则调用方法并将返回值放在缓存中。
在这里插入图片描述
上边这么写,无论查出来有没有数据,都会存入缓存,value的值可能为null
下边这个会判断一下,返回值是不是为空,不为空才进行保存
在这里插入图片描述
上边那个有错误:是因为condition不能使用result
在这里插入图片描述

上边的缓存的底层都是基于map的,现在我们改变一下底层,让他基于redis

redis实现

在这里插入图片描述
导入这个依赖,实现类多一点,但是还是没有redis
再导入这个依赖,就有了
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
需要注意的是,添加缓存的时候,返回的那个结果,一定要实现序列化接口,要不会报错!!!
添加缓存-------查询方法上

 @Cacheable(value="setmealCache",key = "#setmeal.categoryId")

删除缓存全部数据------------修改删除和新增方法上

@CacheEvict(value = "setmealCache",allEntries = true)
@Cacheable(value="setmealCache",key = "#setmeal.categoryId+'_'+#setmeal.status")

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于github制作个人学术网站(主页)

模板 首先找到一个学术模板,fork到远程仓库。academicpages,如果不是很清楚具体的步骤,可以参考保姆级教程。在github上对该网站代码修改不是很方便,肯定是在本地进行更新后push到远程仓库。 本地Git 学会下载和安装就行&#…

基于高斯混合模型聚类的风电场短期功率预测方法(Pythonmatlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

正则表达式测试(二)

一、中括号的语法 匹配所有的字符,返回一个数组,包含匹配的所有字符内容,按顺序展开; 注意:空格也会被匹配到 匹配所有符合的字符,返回一个数组。 匹配空白字符 匹配非空白字符 匹配 空白字符 非空白字符 如上所示&am…

生成式AI:大语言模型ChatGPT交互的机制

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 与 ChatGPT 有效交互的快速工程 随着生成式人工智能的普及,特别是 ChatGPT,提示已成为人工智能世界中越来越重要的技能。制作提示,与大型语言模型&…

SIP业务之BLF

BLF(Busy Lamp Field)是SIP应用中的一项重要业务,用来监视目标号码的状态,常用于调度、坐席监控等场景。 一、 BLF原理 BLF功能需要IP终端或话机与SIP服务器协同实现的,主要流程如下: IP话机向SIP服务器发…

ByteBuddy学习笔记

ByteBuddy 1.ByteBuddy的用途 ByteBuddy通过修改字节码来新增、修改、删除Java类的现有功能,主要用于分离功能代码和非功能代码,比如 比如非功能代码如下: public double calculatePrice(){double discount getDiscount();double price …

嵌入式软件测试笔记10 | 嵌入式软件测试中如何进行安全性分析?

10 | 嵌入式软件测试中如何进行安全性分析? 1 简介2 故障模型及后果分析(FMEA)2.1 三个步骤2.2 带来的结果优势2.3 FMEA分析过程2.3.1 描述系统及其功能2.3.2 识别潜在的故障模式2.3.3 故障模式对功能的影响2.3.4 风险导致后果的原因2.3.5 风…

Django基础入门⑮:更新书籍信息 删除书籍条目信息 Django静态文件配置

Django基础入门⑮:更新书籍信息 删除书籍条目信息 Django静态文件配置 更新书籍信息删除书籍条目信息Django静态文件配置 🏘️🏘️个人简介:以山河作礼。 🎖️🎖️:Python领域新星创作者,CSDN实力新星认证&…

Spring源码系列-第2章-后置工厂处理器和Bean生命周期

第2章-后置工厂处理器和Bean生命周期 后置工厂处理器属于后置处理器,后置处理器是Spring最核心的部分,Spring几乎所有的附加功能全由它完成。 什么是BeanPostProcessor? public interface BeanPostProcessor {/*** Apply this {code BeanPos…

分布式监控系统之zabbix6.0二

分布式监控系统之zabbix6.0二 一、部署 zabbix 代理服务器二、部署 Zabbix 高可用集群三、Zabbix 监控 Windows 系统四、Zabbix 监控 java 应用五、Zabbix 监控 SNMP 一、部署 zabbix 代理服务器 分布式监控的作用: 分担 server 的集中式压力解决多机房之间的网络…

跨站脚本攻击XSS

​​​​​​1、漏洞原理及防御 XSS又叫CSS (CrossSiteScript),因为与层叠样式表(css)重名,所以叫Xss,中文名叫跨站脚本攻击。 xss攻击,主要就是攻击者通过“html注入”篡改了网页,插入了恶意的脚本,从而在用户浏览网页时&#…

火爆全网,自动化测试-Allure完美测试报告(详全)卷起来...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、allure简介 A…