缓存之SpringCache整合redis

devtools/2024/9/23 10:17:59/

Spring Cache 是 Spring 框架提供的一种缓存抽象,在应用中可以方便地使用它来进行方法级别的缓存。结合 Redis 作为缓存存储后端,可以实现高性能的缓存服务。下面是一个简单的示例,演示了如何在 Spring Boot 项目中整合 Spring Cache 和 Redis。

首先,确保你的 Spring Boot 项目中引入了相关的依赖。你需要引入 Spring Boot Starter Cache 和 Spring Boot Starter Data Redis。

<!-- Maven 依赖 -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

接下来,在 Spring Boot 的配置文件中配置 Redis 连接信息:

# Redis 配置
spring.redis.host=127.0.0.1
spring.redis.port=6379
spring.redis.password=
spring.redis.database=0

然后,在你的 Spring Boot 应用中,定义一个 Service 类,并在其中使用 Spring Cache 注解来实现方法级别的缓存

import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;@Service
public class MyService {@Cacheable(value = "myCache", key = "#id")public String getDataById(int id) {// 模拟从数据库或其他数据源中获取数据的操作System.out.println("Fetching data from backend for id: " + id);return "Data for id " + id;}
}

在上面的代码中,@Cacheable 注解用于标记 getDataById 方法,指定了缓存名称为 “myCache”,并指定了缓存的 key 为方法的参数 id。当方法被调用时,如果缓存中已经存在对应 key 的数据,则直接返回缓存中的数据;如果缓存中不存在对应 key 的数据,则执行方法体中的代码,并将结果存入缓存

最后,在你的应用程序中,可以直接调用 MyService 中的方法来获取数据,Spring Cache 会自动处理缓存逻辑。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;@SpringBootApplication
@EnableCaching
public class Application {@Autowiredprivate MyService myService;public static void main(String[] args) {SpringApplication.run(Application.class, args);}public void exampleUsage() {// 调用 MyService 中的方法,数据会被缓存String data = myService.getDataById(1);System.out.println("Data: " + data);// 再次调用相同的方法,数据将直接从缓存中获取,不会执行方法体中的代码data = myService.getDataById(1);System.out.println("Data: " + data);}
}

通过以上配置,Spring Boot 就会自动使用 Redis 作为缓存存储后端,并且通过 Spring Cache 抽象来管理缓存


http://www.ppmy.cn/devtools/4802.html

相关文章

I2C,UART,SPI(STM32、51单片机)

目录 基本理论知识&#xff1a; 并行通信/串行通信&#xff1a; 异步通信/同步通信&#xff1a; 半双工通信/全双工通信: UART串口&#xff1a; I2C串口&#xff1a; SPI串口&#xff1a; I2C在单片机中的应用&#xff1a; 软件模拟&#xff1a; 51单片机&#xff1a;…

【CSS基础】10.过度动画transition和动画animation

1. transition过度动画 1.1 介绍 CSS trnasition提供了一种在更改CSS属性时控制动画速度的方法。 可以让CSS的属性变化称为一个秩序一段时间的过程&#xff0c;而不是默认的立即生效 比如在基础9中我们学到的trnaslate可以让一个元素移动&#xff0c;但瞬间就完成了 我们可…

C# 面向对象编程(三)——接口/枚举类型/泛型

总目录 C# 语法总目录 C# 面向对象编程 三—接口/枚举类型/泛型 接口1. 显示接口实现2. 虚方法实现接口函数 枚举类型泛型类型1.协变/逆变 接口 接口和类区别在于&#xff0c;接口不用为成员函数提供实现&#xff0c;接口的成员都是隐式抽象的&#xff0c;而且接口不能有字段&…

设计模式-外观模式

外观设计模式 定义 何为外观,就是对外提供一个统一的入口,一是可以隐藏系统内部的细节,二是可以降低使用者的复杂度,比如SpringMvc中的DispaterServlet,所有的Controller都是通过DispaterServlet统一暴露。 使用场景 降低使用者的复杂度,简化客户端的接入成本。 实践…

【JAVA基础篇教学】第十三篇:Java中I/O和文件操作

博主打算从0-1讲解下java基础教学&#xff0c;今天教学第十三篇&#xff1a;Java中I/O和文件操作。 理解 Java 中的 I/O&#xff08;输入/输出&#xff09;和文件操作对于开发各种类型的应用程序都至关重要。I/O 操作涉及从文件、网络或其他数据源中读取数据&#xff0c;以及…

如何查看微信公众号发布文章的主图,如何看微信文章的主图,怎么才能拿到主图

如何查看&#xff0c;微信公众号发布文章的主图&#xff0c;如何看微信文章的主图 起因是这样的&#xff0c;当我看到一篇文章的时候&#xff0c;他的主图很漂亮&#xff0c;但是&#xff0c;正文里没有&#xff0c;而我又想看到&#xff0c;并且使用这张图片&#xff0c;该怎么…

比例微积分算法

比例微积分&#xff08;Proportional-Integral-Derivative&#xff0c;简称PID&#xff09;算法是一种常用的控制算法&#xff0c;它用于计算控制器的输出&#xff0c;以使得系统的输出能够尽可能地跟踪期望的目标值。PID控制器基于系统的误差&#xff08;目标值与当前值的差&a…

.cur 鼠标光标编辑器

详解透明贴图和三元光栅操作 - CodeBus 鼠标指针文件格式解析——Windows&#xff08;二&#xff09; (qq.com) [C/C] RGBA数组生成Windows下的ico文件_c ico格式-CSDN博客 色环设计 - CodeBus 左键绘制 右键选颜色 ctrl右键设置鼠标热点 F1导出.cur文件 //代码来源&…