【技术栈】Spring Cache 简化 Redis 缓存使用

SueWakeup

                                                       个人主页:SueWakeup

                                                      系列专栏:学习技术栈

                                                      个性签名:保留赤子之心也许是种幸运吧

本文封面由 凯楠📸 友情提供

目录

 本栏传送门

1. Spring Cache 介绍

2. Spring Cache 常用注解

注:手机端浏览本文章可能会出现 “目录”无法有效展示的情况,请谅解,点击侧栏目录进行跳转 


 本栏传送门

1.【技术栈】Redis 的理解与数据存储格式

2.【技术栈】Redis 中的事务及持久化方式

3.【技术栈】Redis 删除策略

4.【技术栈】Redis 企业级解决方案

5.【数据结构】布隆过滤器

6.【开发】SpringBoot 整合 Redis

7.【技术栈】Spring Cache 简化 Redis 缓存使用


1. Spring Cache 介绍

Spring Cache 是一个框架,实现类基于注解的缓存功能,提供一层抽象,底层可以切换不同的 cache 实现。具体是通过 CacheManager 接口来统一不同的缓存技术。

CacheManager 缓存管理器是 Spring 提供的各种缓存技术抽象接口

针对不同的缓存技术需要实现不同的 CacheManager:

CacheManager描述
EhCacheManager使用 EhCache 作为缓存技术(Spring Cache 框架操作的默认缓存)
GuavaCacheManager使用 Google 的 GuavaCache 作为缓存技术
RedisCacheManager使用 Redis 作为缓存技术

2. Spring Cache 常用注解

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

 使用步骤:

1. 引入缓存启动器:spring-boot-starter-cache,spring-boot-starter-data-redis

2. @EnableCaching:在启动类上,开启基于注解的缓存

3. @Cacheable:标在方法上,返回的结果会进行缓存

        属性:value / cacheNames 缓存的名字

                key:作为缓存中的 Key 值,可自己使用 SpEL 表达式指定(不指定就是参数值),缓存结果是方法返回值

名字描述示例
methodName当前被调用的方法名#root.methodName
targetClass当前被调用的目标对象#root.target
targetClass当前被调用的目标对象类#root.targetClass
args当前被调用的方法的参数列表#root.args [0]
caches

当前方法调用使用的缓存列表

(如@Cacheable(value ={"cache1","cache2"})),则有两个cache

#root.cache [0].name

argumentname

方法参数的名字.可以直接 #参数名,也可以使用 #p0 或 # a0 的形式,0 代表参数的索引 #iban、#a0、#p0
result方法执行后的返回值(仅当方法执行之后的判断有效,在@CachePut 使用于更新数据后可用)#result

 

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

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

相关文章

TCP/IP ⽹络模型

TCP/IP ⽹络模型 对于同⼀台设备上的进程间通信,有很多种⽅式,⽐如有管道、消息队列、共享内存、信号等⽅式,⽽对于不同设备上的进程间通信,就需要⽹络通信,⽽设备是多样性的,所以要兼容多种多样的设备&am…

[PwnThyBytes 2019]Baby_SQL

[PwnThyBytes 2019]Baby_SQL 查看源码发现 下载源码,首先观察index.php 首先进入index.php,会执行session_start();启动session这里通过foreach将所有的环境变量的值都遍历了一遍,并且都使用了addslashes()进行转义,然后就定义了…

【论文阅读】(DALL-E)Zero-Shot Text-to-Image Generation

(DALL-E)Zero-Shot Text-to-Image Generation 引用: Ramesh A, Pavlov M, Goh G, et al. Zero-shot text-to-image generation[C]//International conference on machine learning. Pmlr, 2021: 8821-8831. 论文链接: [2102.120…

3D开发工具HOOPS在船舶设计中的应用以及其价值优势

在当今数字化时代,船舶设计领域也不例外地受益于先进的技术和工具。HOOPS 3D图形SDK(Software Development Kit)作为一种强大的工具,在船舶设计中发挥着越来越重要的作用。它为设计师们提供了一种高效、灵活且功能丰富的方式来处理…

Android Studio实现内容丰富的安卓外卖平台

获取源码请点击文章末尾QQ名片联系,源码不免费,尊重创作,尊重劳动 项目编号122 1.开发环境android stuido jdk1.8 eclipse mysql tomcat 2.功能介绍 安卓端: 1.注册登录 2.查看公告 3.查看外卖分类 4.购物车, 5.个人中…

nodejs基于vue超市信息管理系统flask-django-php

互联网的快速发展,使世界各地的各种组织的管理方式发生了根本性的变化,我国政府、企业等组织在上个世纪90年代就已开始考虑使用互联网来管理信息。由于以前的种种因素,比如网络的普及率不高,用户对它的认知度不够,以及…

GPT实战系列-智谱GLM-4的模型调用

GPT实战系列-智谱GLM-4的模型调用 GPT专栏文章: GPT实战系列-实战Qwen通义千问在Cuda 1224G部署方案_通义千问 ptuning-CSDN博客 GPT实战系列-ChatGLM3本地部署CUDA111080Ti显卡24G实战方案 GPT实战系列-Baichuan2本地化部署实战方案 GPT实战系列-让CodeGeeX2帮…

创建自己的“百度网盘”(部署owncloud)

[rootlocalhost html]# cd /root/[rootlocalhost ~]# wget https://download.com/server/stable/owncloud-10.12.0.zip --no-check-certificate #下载当前的owncloud代码包[rootlocalhost ~]# yum -y install unzip #安装解压工具[rootlocalhost ~]# unzip owncloud-10.12.0.zi…

HarmonyOS开发:超详细介绍如何开源静态共享包,实现远程依赖

前言 当我们开发了一个独立的功能,想让他人进行使用,一般的方式就是开源出去,有源码的方式,也有文件包的形式,当然了也有远程依赖的方式,比如在Android中,我们可以提供源码,也可以打…

【PG数据库】PostgreSQL 转储详细操作流程

1.pg_dump pg_dump 是用于备份一种 PostgreSQL 数据库的工具。即使数据库正在被并发使用,它也能创建一致的备份。pg_dump不阻塞其他用户访问数据库(读取或写入)。 pg_dump 只转储单个数据库。要备份一个集簇中 对于所有数据库公共的全局对象…

基于python失物招领系统-安卓-flask-django-nodejs-php

随着现在网络的快速发展,网络的应用在各行各业当中,利用网络来做这个失物招领的网站,随之就产生了“失物招领 ”,这样用户就可以利用平台来发布信息。 对于本失物招领 的设计来说, 它是应用mysql数据库、安卓等技术动…

路由器的端口映射能实现什么?

路由器的端口映射是一项重要的网络配置功能,它可以帮助实现局域网内外的设备之间的通信。通过端口映射,我们可以在公网上访问局域网内的设备,方便的进行远程访问、共享文件和资源等操作。 什么是端口映射? 在介绍端口映射之前&am…

【RabbitMQ | 第七篇】RabbitMQ实现JSON、Map格式数据的发送与接收

文章目录 7.RabbitMQ实现JSON、Map格式数据的发送与接收7.1消息发送端7.1.1引入依赖7.1.2yml配置7.1.3RabbitMQConfig配置类——(非常重要)(1)创建交换器方法(2)创建队列方法(3)绑定…

【RabbitMQ | 第六篇】消息重复消费问题及解决方案

文章目录 6.消息重复消费问题6.1问题介绍6.2解决思路6.3将该消息存储到Redis6.3.1将id存入string(单消费者场景)(1)实现思路(2)问题 6.3.2将id存入list中(多消费场景)(1&…

《Linux 高可用负载均衡集群实践真传》正式面市

终于等到啦! ​"Linux高可用实践真传系列"三本终于全部弄齐了,总的来说算是圆满。 本书为《Linux企业级高可用实践真传》系列丛书之《Linux 高可用负载均衡集群实践真传》。是一本专门介绍主流负载均衡技术的原创书籍,是作者二十多…

Springboot+vue的仓库管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。

演示视频: Springbootvue的仓库管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。 项目介绍: 采用M(model)V(view)C(controller)三层…

智慧城市与数字孪生:科技融合助力城市可持续发展

随着信息技术的迅猛发展,智慧城市和数字孪生作为现代城市发展的重要理念和技术手段,正日益受到广泛关注。智慧城市通过集成应用先进的信息通信技术,实现城市管理、服务、运行的智能化,而数字孪生则是利用数字化手段对物理城市进行…

Harvester基于 Kubernetes 构建的开源超融合基础架构 (HCI) 软件

Harvester 是基于 Kubernetes 构建的开源超融合基础架构 (HCI) 软件。它是使用专有 HCI 堆栈的一种开放替代方案,该堆栈结合了 Cloud Native Computing 的设计和精神。 Harvester 功能​ Harvester 支持在裸机服务器上实施 HCI。Harvester 使用本地、直接连接的存…

vue+bpmn.js实现自定义流程图

效果图: 使用插件版本: 插件名称版本安装命令 bpmn-js 7.3.1 npm install bpmn-js^7.3.1 --save-D bpmn-js-properties-panel 0.37.2 npm install bpmn-js-properties-panel^0.37.2 --save-Dcamunda-bpmn-moddle4.5.0npm install camunda-bpmn-moddle…

HCIA ——VLAN实验

一 、 实验需求 1.PC1和PC3所在接口为access接口;属于vlan 2 PC2-4-5-6处于同一网段;其中PC2可以访问PC4-5-6 PC4可以访问PC5不能访问PC6 PC5不能访问PC6 3.PC1-PC3与PC2-4-5-6不在同一个网段 4.所有PC均使用DHCP获取IP地址,且PC1可以正常访问…
最新文章