springboot缓存篇之内置缓存
前言
前面我们讲了mybatis的一级缓存和二级缓存,这种缓存是基于持久层的缓存,存在很大的局限性。这篇文章主要分享一下另外的一种缓存方式,springboot的内置缓存,看看内置缓存的用法和它的优劣。
开启缓存
在使用springboot的内置缓存之前必须做以下两个步骤:
引入依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId>
</dependency>
开启缓存
在启动文件加上@EnableCaching注解即可
@EnableCaching
public class DemoGwStartApplication {public static void main(String[] args) {SpringApplication.run(DemoGwStartApplication.class, args);}
}
缓存注解
@Cacheable
两个重要的属性 :value和key
其中key指定的是数据在缓存中存储的键,value是只要使用的缓存名称
作用:在方法执行前 Spring 先查看缓存中是否有数据,若有,则直接返回缓存数据:若无数据,则调用方法将方法返回值放入缓存中。
例子:
@Override
@Cacheable(value = "goods-info", key = "#id")
public Goods info(Long id) {log.info("从数据库获取");return goodsMapper.selectByPrimaryKey(id);
}
看控制台日志可以发现,只有第一次会打印"从数据库获取",后续运行接口就直接从缓存中拿,不会再执行方法里面的内容了。
@CachePut
同样的该方法也是有两个重要属性:value和key
作用:将方法返回值放入缓存中
它并不像@Cacheable一样,需要查是否存在缓存,它是直接设置缓存,一般是在新增或更新缓存的时候用到。
例子:
@CachePut`(value = "goods-info", key = "#id")
public Goods update(Goods goods){goodsMapper.updateByPrimaryKeySelective(goods);return goods;
}
@CacheEvict
它的一个重要属性:key,跟上面两个注解的key是一样的意思
作用:删除缓存
例子:
@CacheEvict(value = "order-info", key = "#id")
public void delete(Long id){Goods goods = new Goods();goods.setId(id);goods.setDeleted(0);goodsMapper.updateByPrimaryKeySelective(goods);
}
@Caching
作用:可以通过 @Caching 注解组合多个注解策略在一个方法上.
这个也不难理解,比如说我们在一个方法里面,生成了订单的同时清空了购物车,订单是要缓存的,而购物车是需要清空的,这时是不是要一个组合?
此时我们可以在方法是加上这个注解
@Caching(cacheable = {@Cacheable(value = "order-info", key = "#id")},evict = {@CacheEvict(value = "cart-info", key = "#id")}
)
总结
springboot 的内置缓存使用注解的方式非常简单,它是把数据保存在内存中,因此它的效率非常高,但它同样面临一个问题就是无法在分布式环境中使用。就如之前分享的那篇文章《mybatis的一级缓存和二级缓存》一样,如果存在多个节点,缓存更新的只是当前的节点而不是所有的节点。
相关文章:
springboot缓存篇之内置缓存
前言 前面我们讲了mybatis的一级缓存和二级缓存,这种缓存是基于持久层的缓存,存在很大的局限性。这篇文章主要分享一下另外的一种缓存方式,springboot的内置缓存,看看内置缓存的用法和它的优劣。 开启缓存 在使用springboot的内…...
微信小程序开发之投票管理及小程序UI的使用
目录 一、小程序UI 1.讲述 2. 介绍vantWeapp 3. 使用vantWeapp 安装 构建 依赖 引用 二、后端 1. 后端实体对象 2. 后端接口 3. 实现类 4. 请求处理类 三、前端 1. 定义路径 2. 页面引用 3. 页面 4. 页面美化 5. 数据 6. 效果展示 一、小程序UI 1.讲述 小…...
EPB功能开发与测试(基于ModelBase实现)
ModelBase是经纬恒润开发的车辆仿真软件,包含两个大版本:动力学版本、智能驾驶版本。动力学版包含高精度动力学模型,能很好地复现车辆在实际道路中运行的各种状态变化,可用于乘用车、商用车动力底盘系统算法开发、控制器仿真测试&…...
微信小程序:点击按钮出现右侧弹窗
效果 代码 wxml <!-- 弹窗信息 --> <view class"popup-container" wx:if"{{showPopup}}"><view class"popup-content"><!-- 弹窗内容 --><text>这是一个右侧弹窗</text></view> </view> <…...
EEG脑电信号的具体采集过程
脑电图(EEG)是一种记录大脑活动的非侵入性方法。下面是EEG脑电信号的典型采集过程: 准备:在进行EEG采集之前,需要准备好以下设备和材料: EEG采集设备:包括EEG电极、放大器和记录设备。电极帽或电…...
SYS/BIOS 开发教程: 创建自定义平台
目录 SYS/BIOS 开发教程: 创建自定义平台创建自定义平台新建工程并指定自定义平台修改现有工程使用自定义平台 参考: TI SYS/BIOS v6.35 Real-time Operating System User’s Guide 6.2节 本示例基于 EVMC6678L 开发板, 创建自定义平台, 并将代码段的位置指定到C6678器件内部的…...
【Qt样式(qss)-5】qss局部渲染混乱,错乱,不生效的一种原因
前言: 之前写过一些关于qss的文章: 【Qt样式(qss)-1】手册小结(附例:软件深色模式)_深蓝色主题qss表-CSDN博客 【Qt样式(qss)-2】使用小结(软件换肤&#…...
最新基于机器学习模型单图换脸离线版软件包及使用方法,本地离线版本模型一键运行(免费下载)
最新基于机器学习模型单图换脸离线版软件包及使用方法,本地离线版本模型一键运行(免费下载)。 “单图换脸”离线一键运行版来了。Roop发布几十个小时后,马不停蹄地搞了Colab在线版。其实这东西都挺好的,又快又方便,几乎没有任何硬件要求,点一点就可以搞定了。但是它有…...
通过VScode连接远程 Linux 服务器修改vue代码
1先在Linux环境安装node,官网下载的node安装包放在自己新建文件夹 2解压 tar -zxvf node-v18.18.0-linux-x64.tar.xz 3新建代码路径, 下载代码 4安装 OpenSSH OpenSSH 可以让你在终端使用 ssh 命令,Windows10 一般自带。 可以通过以下方式…...
Pytorch实现深度学习常见问题
RuntimeError: stack expects each tensor to be equal size, but got [3, 300, 300] at entry 0 and [3, 301, 301] at entry 24 这里的问题出现的原因肯定是在数据预处理处,如下图,当数据使用不同的transforms处理方式时,会导致数据的尺寸大…...
ICMP权限许可和访问控制漏洞处理(CVE-1999-0524)
一、问题描述 某次例行安全扫描,发现:ICMP权限许可和访问控制漏洞,编号:CVE-1999-0524,危险级别:低风险。利用该漏洞,远程主机会回复ICMP_TIMESTAMP查询并返回它们系统的当前时间,I…...
Java生成优惠券兑换码并确保唯一性最终添加到数据库
1.使用随机数生成器或其他生成唯一标识符的算法来生成兑换码。 2.创建一个 HashSet 或其他适合存储兑换码的数据结构来确保唯一性。每次生成一个兑换码时,先检查它是否已经存在于 HashSet 中,如果存在则重新生成直到生成一个新的唯一兑换码。 3.循环调…...
【Linux/脚本/芯片学习】Perl学习
Title:Perl学习 个人学习策略 主用python. 看懂perl 和 tcl 即可。 之前的存货 开始搬砖后,整理 ”网络发布版笔记“ 的心思寡淡了好多,可能就是被工作榨干的原因8… 但今天至少得赶个1024节日… ( ̄▽ ̄)"~ 1 介…...
嵌入式实时操作系统的设计与开发(信号量学习)
信号量 除了临界点机制、互斥量机制可实现临界资源的互斥访问外,信号量(Semaphore)是另一选择。 信号量与互斥量的区别 对于互斥量来说,主要应用于临界资源的互斥访问,并且能够有效地避免优先级反转问题。对于信号量…...
python环境安装教程
Python是一种流行的高级编程语言,它简单易学、功能强大,适用于各种应用领域,从Web开发到数据科学和人工智能。在本教程中,我将向您介绍如何安装Python并设置您的开发环境。请注意,以下步骤适用于Windows操作系统。 步…...
【学习笔记】CF1784F Minimums or Medians
首先让 n n n乘上 2 2 2。 考虑枚举最终被删除的位置有哪些。 a i 0 a_i0 ai0表示这个位置被删除, a i 1 a_i1 ai1表示这个位置被保留,设满足 a i 0 a_i0 ai0的前缀长度为 l l l( l l l是偶数), p r e i pre…...
如何系列 如何玩转远程调用之OpenFegin+SpringBoot(非Cloud)
文章目录 简介原生Fegin示例基础契约日志重试编码器/解码器自定义解码器 请求拦截器响应拦截器表单文件上传支持错误解码器断路器指标metrics客户端 配合SpringBoot(阶段一)配合SpringBoot(阶段二)1.EnableLakerFeignClients2.Lak…...
Python学习第2天-安装pycharm
文章目录 前言一、下载二、安装1.选择安装目录2.安装配置 总结 前言 好用的工具可以极大地提高生产力,开发Python推荐使用jetbrains全家桶的pycharm。 一、下载 通过官网下载安装包。 二、安装 1.选择安装目录 2.安装配置 一路Next,安装完成 总结 …...
等电位连接器行业应用综合方案
等电位连接器的原理 等电位连接器的原理是利用气体放电管或压敏电阻等非线性元件,当连接器两端的电位差大于所限峰值电压时,连接器导通,迫使连接器两端不同接地体电位基本相等,消除接地体间放电现象,从而避免了由于地…...
内裤洗衣机有用吗?最好用的四款内衣洗衣机测评
相信很多小伙伴往往会因为懒而不想洗内衣,又或者洗内衣时经常会洗不干净!这时就很有必要入手一台内衣洗衣机了,当我们洗完澡时,顺手把内衣放入洗衣机内,一键启动即可把我们的内衣洗得干干净净!同时还可以为…...
Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
视觉slam十四讲实践部分记录——ch2、ch3
ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...
莫兰迪高级灰总结计划简约商务通用PPT模版
莫兰迪高级灰总结计划简约商务通用PPT模版,莫兰迪调色板清新简约工作汇报PPT模版,莫兰迪时尚风极简设计PPT模版,大学生毕业论文答辩PPT模版,莫兰迪配色总结计划简约商务通用PPT模版,莫兰迪商务汇报PPT模版,…...
宇树科技,改名了!
提到国内具身智能和机器人领域的代表企业,那宇树科技(Unitree)必须名列其榜。 最近,宇树科技的一项新变动消息在业界引发了不少关注和讨论,即: 宇树向其合作伙伴发布了一封公司名称变更函称,因…...
jmeter聚合报告中参数详解
sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample(样本数) 表示测试中发送的请求数量,即测试执行了多少次请求。 单位,以个或者次数表示。 示例:…...
