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

SueWakeup

个人主页:SueWakeup

系列专栏:学习技术栈

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


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

目录

本栏传送门

[1. Spring Cache 介绍](#1. Spring Cache 介绍)

[2. 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

相关推荐
异常驯兽师15 小时前
Spring 中处理 HTTP 请求参数注解全解析
java·spring·http
ouou061715 小时前
企业级NoSql数据库Redis集群
数据库·redis·nosql
蒋星熠16 小时前
破壁者指南:内网穿透技术的深度解构与实战方法
网络·数据库·redis·python·websocket·网络协议·udp
纪莫16 小时前
技术面:Spring (bean的生命周期、创建方式、注入方式、作用域)
java·spring·java面试⑧股
七夜zippoe17 小时前
缓存三大劫攻防战:穿透、击穿、雪崩的Java实战防御体系(一)
java·开发语言·缓存
爱干饭的boy19 小时前
手写Spring底层机制的实现【初始化IOC容器+依赖注入+BeanPostProcesson机制+AOP】
java·数据结构·后端·算法·spring
躲在云朵里`19 小时前
Redis深度解析:核心数据结构、线程模型与高频面试题
数据结构·数据库·redis
恣艺20 小时前
Redis是什么?一篇讲透它的定位、特点与应用场景
数据库·redis·缓存
AD钙奶-lalala20 小时前
Spring Initializr(或者 IDEA 里新建 Spring Boot 项目)时 Dependencies 的选择
spring boot·spring·intellij-idea
没有bug.的程序员21 小时前
Redis 内存优化与压缩:从原理到实战的完整指南
java·数据库·redis·内存优化·压缩内存