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

Spring Boot 集成 Redis 实战教程

前言

在高并发、大数据量的应用场景中,缓存是提升系统性能的关键技术。Redis 凭借其卓越的读写性能、丰富的数据结构和高可用性,成为开发者常用的缓存工具。本教程将严格依据Spring 官方文档与Redis 官方文档,详细介绍 Spring Boot 与 Redis 的集成步骤。

一、创建 Spring Boot 项目

Spring Initializr 是创建 Spring Boot 项目的官方推荐方式,通过它能快速生成包含 Redis 依赖的项目骨架:

  1. 访问Spring Initializr 官网;

  2. 在页面中填写项目基本信息,如Group(组织标识符)、Artifact(项目名称);

  3. Dependencies(依赖)搜索框中输入Redis,选择Spring Data Redis

  4. 点击Generate生成项目压缩包,解压后使用 IDE 打开。

也可通过 IDE(如 IntelliJ IDEA)的New Project向导,选择Spring Initializr,按上述步骤完成项目创建。

二、引入 Redis 依赖

根据 Spring Boot 官方文档,spring-boot-starter-data-redis依赖整合了 Redis 操作所需的核心功能。在pom.xml文件中,默认情况下创建项目时已包含该依赖,若缺失,可手动添加:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

该依赖默认使用Lettuce作为 Redis 客户端,Lettuce是基于 Netty 的响应式客户端,在多线程环境下表现出色。若需使用传统的Jedis客户端,参考官方文档,可添加如下配置:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><exclusions><exclusion><groupId>io.lettuce</groupId><artifactId>lettuce-core</artifactId></exclusion></exclusions>
</dependency>
<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId>
</dependency>

三、配置 Redis 连接信息

Spring Boot 官方文档提供了多种配置 Redis 连接的方式,最常用的是在配置文件中设置。在application.propertiesapplication.yml文件中,配置示例如下:

application.properties;

spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=
spring.redis.database=0
spring.redis.timeout=3000
# 连接池配置(可选)
spring.redis.lettuce.pool.max-idle=8
spring.redis.lettuce.pool.min-idle=0
spring.redis.lettuce.pool.max-active=8
spring.redis.lettuce.pool.max-wait=-1ms

application.yml;

spring:redis:host: localhostport: 6379password:database: 0timeout: 3000lettuce:pool:max-idle: 8min-idle: 0max-active: 8max-wait: -1ms

配置说明:

  • spring.redis.host:Redis 服务器主机地址;

  • spring.redis.port:Redis 服务器端口号;

  • spring.redis.password:Redis 访问密码;

  • spring.redis.database:使用的 Redis 数据库编号(0 - 15);

  • spring.redis.timeout:连接超时时间;

  • 连接池相关配置(以Lettuce为例):用于控制连接池的大小和行为,提升连接管理效率。

四、编写 Redis 操作代码

1. 创建 Redis 配置类

参考 Spring 官方文档,创建配置类以定制RedisTemplate。以Lettuce客户端为例:


@Configurationpublic class RedisConfig {@Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {RedisTemplate<String, Object> template = new RedisTemplate<>();template.setConnectionFactory(redisConnectionFactory);// 键使用String序列化template.setKeySerializer(new StringRedisSerializer());template.setHashKeySerializer(new StringRedisSerializer());// 值使用JSON序列化template.setValueSerializer(new GenericJackson2JsonRedisSerializer());template.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());return template;}
}

上述代码配置了RedisTemplate,通过合理设置序列化方式,方便对不同类型数据进行存储和读取。

2. 编写 Redis 操作 Service;

封装 Redis 常用操作,方便业务代码调用:

@Servicepublic class RedisService {private final RedisTemplate<String, Object> redisTemplate;public RedisService(RedisTemplate<String, Object> redisTemplate) {this.redisTemplate = redisTemplate;}// 存储数据public void set(String key, Object value) {redisTemplate.opsForValue().set(key, value);}// 存储数据并设置过期时间public void set(String key, Object value, long timeout, TimeUnit unit) {redisTemplate.opsForValue().set(key, value, timeout, unit);}// 获取数据public Object get(String key) {return redisTemplate.opsForValue().get(key);}// 删除数据public void delete(String key) {redisTemplate.delete(key);}}

3. 测试 Redis 操作

使用 JUnit 5 编写测试类验证 Redis 操作:

@SpringBootTestpublic class RedisTest {@Autowiredprivate RedisService redisService;@Testpublic void testRedis() {// 存储数据redisService.set("testKey", "testValue");// 获取数据Object value = redisService.get("testKey");System.out.println("获取到的值:" + value);// 删除数据redisService.delete("testKey");Object deletedValue = redisService.get("testKey");System.out.println("删除后获取到的值:" + deletedValue);}
}

运行测试,若控制台输出预期结果,表明 Redis 集成成功。

五、使用 Redis 实现缓存

Spring 官方文档提供了强大的缓存抽象机制,结合 Redis 可轻松实现缓存功能。

1. 启用缓存

在 Spring Boot 主类上添加@EnableCaching注解:

@SpringBootApplication
@EnableCaching
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}

2. 编写 Service 方法并添加缓存注解

以用户查询为例:

@Servicepublic class UserService {// 模拟从数据库查询用户public User getUserFromDatabase(String userId) {// 实际查询数据库逻辑return new User(userId, "John Doe");}// 使用@Cacheable缓存方法结果@Cacheable(value = "users", key = "#userId")public User getUser(String userId) {return getUserFromDatabase(userId);}
}

@Cacheable注解会根据valuekey定义的规则,自动管理缓存的读写,当方法再次被调用时,若缓存存在则直接返回缓存数据,提升系统响应速度。

总结

通过以上步骤,依据官方文档完成了 Spring Boot 与 Redis 的集成及缓存实现。实际开发中,还可探索 Redis 的发布订阅、哨兵模式、集群模式等高级功能,进一步挖掘 Redis 潜力。若在实践过程中有疑问,欢迎交流讨论。

相关文章:

  • spring boot源码和lib分开打包
  • AWS CloudFormation实战:构建可复用的ECS服务部署模板
  • AWS TAM行为面试模拟题
  • onnx 模型转 rknn 部署 rk3588 开发板
  • Centos与RockLinux设置静态ip
  • TripGenie:畅游济南旅行规划助手:团队工作纪实(十四)
  • 26-Oracle 23 ai Automatic Transaction Rollback(行锁终结者)
  • 如何正确的用Trae 打开 Unity 3D 项目
  • 神经网络全景图:五大核心架构详解与本质区别
  • QB/T 8103-2024 氯化聚氯乙烯板材检测
  • java并发包中的ReentrantLock锁详解篇
  • Java Collection接口解析
  • C++与C有什么不同
  • 数据集-目标检测系列- 狮子 数据集 lion >> DataBall
  • Python实战:高效连接与操作Elasticsearch的完整指南
  • [灵感源于算法] 链表类问题技巧总结
  • Ubuntu 实现可视化组raid和升级raid
  • Git 介绍、安装以及基本操作
  • 【PhysUnits】17.7 readme.md更新
  • 仓库物资出入库管理系统源码+uniapp小程序
  • 公司网站建设公司/公司建官网要多少钱
  • 简述上课网站建设所用的技术架构/什么网站推广比较好
  • cf租号网站怎么做的/搜索网站哪个好
  • 如何设计一个完整的网站/如何做网络推广
  • 济南电商网站开发/广州seo培训
  • 3g网站是什么意思/百度广告推广怎么收费了