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

【技术栈】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

 

相关文章:

  • 入门【网络安全/黑客】启蒙教程
  • 部署dagu_1.12.10+replicadb0.15.1+sqlline1.12
  • Grok-1:参数量最大的开源大语言模型
  • 基于Java+SpringMvc+vue+element实现上海汽车博物馆平台
  • GitHub Copilot+ESP开发实战-串口
  • 现代卷积神经网络
  • springboot+itextpdf+thymeleaf+ognl根据静态模版文件实现动态生成pdf文件并导出demo
  • 网络原理(5)——IP协议(网络层)
  • 【C++】每日一题 452 用最少数量的箭引爆气球
  • JAVA Synchronized对象锁和类锁区别(牛逼)
  • 24.3 分布式综合应用
  • AWTK-MODBUS 服务器
  • 阿里云ECS服务器安装java环境相关软件
  • 6个免费的ChatGPT网站
  • 常用的6个的ChatGPT网站,国内可用!
  • Docker搭建LNMP环境实战(一):前言
  • 基于python+vue 的一加剧场管理系统的设计与实现flask-django-nodejs-php
  • 服务器感染了.kat6.l6st6r勒索病毒,如何确保数据文件完整恢复?
  • 平衡隐私与效率,Partisia Blockchain 解锁数字安全新时代
  • Vscode初建Vue时几个需要注意的问题
  • 这座古村,藏着多少赣韵风华
  • 体坛联播|郑钦文收获红土赛季首胜,国际乒联公布财报
  • 金地集团:今年前4个月实现销售额109.3亿元,同比下降52.44%
  • 75岁亚当·费舍尔坐镇,再现80分钟马勒《第九交响曲》
  • 本科生已发14篇SCI论文被指由其教授父亲挂名,重庆大学成立工作组核实
  • 迪拜金融市场CEO:2024年市场表现出色,超八成新投资者来自海外