news 2026/2/4 16:10:18

Spring Boot 整合 Redis 步骤详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Spring Boot 整合 Redis 步骤详解
文章目录
  • 1. 引言
  • 2. 添加依赖
  • 3. 配置 Redis 连接信息
  • 4. 创建 Redis 操作服务类
  • 5. 使用 RedisTemplate 或 ReactiveRedisTemplate
  • 6. 测试 Redis 功能
  • 7. 注意事项
  • 8. 总结

Redis 是一个高性能的键值存储系统,常用于缓存、消息队列等多种场景。将 Redis 与 Spring Boot 结合使用可以极大提升应用的性能和响应速度。本文将详细介绍如何在 Spring Boot 应用中整合 Redis,并通过示例代码展示具体实现步骤。

1. 引言

随着互联网应用对快速读写数据的需求日益增长,传统的数据库已经难以满足某些特定场景下的性能要求。Redis 凭借其内存级的数据访问速度、丰富的数据结构支持以及简单易用的 API,成为了许多开发者的首选。接下来,我们将一步步介绍如何在 Spring Boot 中集成 Redis。

2. 添加依赖

首先,在 pom.xml 文件中添加 Spring Data Redis 和 Jedis(或 Lettuce)客户端的 Maven 依赖:

<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!-- Spring Boot Starter for Redis --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.83</version> </dependency> <!-- Jedis or Lettuce client --> <!-- Choose one of the following two dependencies --> <!-- For Jedis --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> </dependency> <!-- Or for Lettuce --> <dependency> <groupId>io.lettuce</groupId> <artifactId>lettuce-core</artifactId> </dependency> </dependencies>

3. 配置 Redis 连接信息

接下来,在 application.properties 或 application.yml 文件中配置 Redis 的连接参数。这里以 .yml 文件为例:

server: port: 8082 spring: data: redis: host: localhost port: 6379 password: 123456

4. 创建 Redis 操作服务类

Java实体

import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; /** * @Description * @Author HaleyHu * @Date 2024/12/5 23:41 */ @Data @NoArgsConstructor @AllArgsConstructor public class User { private Long id; private String username; private int age; }

用户接口类

import org.hbin.redis.entity.User; /** * @Description * @Author HaleyHu * @Date 2024/12/5 23:44 */ public interface UserService { User query(Long id); Boolean expired(Long id); }

接口实现类

import com.alibaba.fastjson.JSON; import lombok.RequiredArgsConstructor; import org.hbin.redis.entity.User; import org.hbin.redis.service.UserService; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; /** * @Description * @Author HaleyHu * @Date 2024/12/5 23:46 */ @Service @RequiredArgsConstructor public class UserServiceImpl implements UserService { private final RedisTemplate<String, String> redisTemplate; private final String REDIS_PREFIX_KEY = "User::"; @Override public User query(Long id) { Object obj = redisTemplate.opsForValue().get("User::" + id); if(obj != null) { return JSON.parseObject(obj.toString(), User.class); } // 模拟从DB查询 User user = new User(id, "user" + id, 20); redisTemplate.opsForValue().set(REDIS_PREFIX_KEY + id, JSON.toJSONString(user)); return user; } @Override public Boolean expired(Long id) { return redisTemplate.delete(REDIS_PREFIX_KEY + id); } }

Controller代码

import lombok.RequiredArgsConstructor; import org.hbin.redis.entity.User; import org.hbin.redis.service.UserService; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; /** * @Description * @Author HaleyHu * @Date 2024/12/5 23:46 */ @RequiredArgsConstructor @RestController public class UserController { private final UserService userService; @GetMapping("/query") public User query(@RequestParam Long id) { return userService.query(id); } @GetMapping("/expired") public String expired(@RequestParam Long id) { return userService.expired(id).toString(); } }

如果你想处理更复杂的数据类型(如对象),则需要使用 RedisTemplate 并配置序列化器。例如,使用 Jackson JSON 序列化器:

import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer; @Configuration public class RedisConfig { @Bean public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) { RedisTemplate<String, Object> template = new RedisTemplate<>(); template.setConnectionFactory(factory); Jackson2JsonRedisSerializer<Object> serializer = new Jackson2JsonRedisSerializer<>(Object.class); ObjectMapper objectMapper = new ObjectMapper(); serializer.setObjectMapper(objectMapper); template.setValueSerializer(serializer); template.setKeySerializer(new StringRedisSerializer()); template.setHashKeySerializer(new StringRedisSerializer()); template.setHashValueSerializer(serializer); template.afterPropertiesSet(); return template; } }

5. 使用 RedisTemplate 或 ReactiveRedisTemplate

Spring Data Redis 提供了两种主要的方式来与 Redis 进行交互:同步方式 (RedisTemplate) 和响应式编程方式 (ReactiveRedisTemplate)。根据你的需求选择合适的方式。

同步方式 (RedisTemplate)
这是最常见的方式,适用于大多数应用场景。

响应式编程方式 (ReactiveRedisTemplate)
如果你的应用采用了响应式编程模型(如 WebFlux),那么 ReactiveRedisTemplate 可能更适合你。它允许你以非阻塞的方式与 Redis 进行通信。

6. 测试 Redis 功能

最后,我们可以通过编写单元测试来验证 Redis 的基本功能是否正常工作。也可以部署运行上述程序来验证。访问路径:
http://localhost:8082/query?id=1
http://localhost:8082/expired?id=1

7. 注意事项

  • 生产环境配置:在生产环境中部署时,请确保正确配置 Redis 的安全设置(如密码保护、网络限制等),并考虑启用持久化选项以防止数据丢失。
  • 性能优化:合理调整连接池参数,避免过多的连接消耗资源;同时也可以根据业务特点选用合适的序列化器来提高性能。
  • 监控和维护:定期检查 Redis 的运行状态,及时清理过期数据,保持系统的稳定性和高效性。

8. 总结

通过上述步骤,我们成功地在 Spring Boot 应用中集成了 Redis,并实现了基本的数据缓存功能。这不仅提高了应用的性能,还为开发者提供了更多灵活的数据管理手段。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/29 22:46:10

HY-MT1.5-7B部署优化:自动扩展与负载均衡

HY-MT1.5-7B部署优化&#xff1a;自动扩展与负载均衡 1. 引言 随着多语言交流需求的不断增长&#xff0c;高质量、低延迟的翻译服务已成为智能应用的核心能力之一。腾讯开源的混元翻译大模型 HY-MT1.5 系列&#xff0c;凭借其在翻译质量、多语言支持和场景适应性方面的突出表…

作者头像 李华
网站建设 2026/2/4 0:56:18

腾讯HY-MT1.5-7B应用:在线教育多语言

腾讯HY-MT1.5-7B应用&#xff1a;在线教育多语言 随着全球化进程的加速&#xff0c;在线教育平台正面临日益增长的多语言内容需求。从课程字幕翻译到跨文化教学材料本地化&#xff0c;高质量、低延迟的翻译能力成为提升用户体验和扩大市场覆盖的关键。在此背景下&#xff0c;腾…

作者头像 李华
网站建设 2026/2/3 17:16:42

通过Vector工具配置NM唤醒报文的项目应用

如何用Vector工具精准配置NM唤醒报文&#xff1f;实战解析在当前汽车电子系统日益复杂的背景下&#xff0c;如何让几十甚至上百个ECU既高效通信又不“吃电”&#xff0c;成了每个嵌入式工程师必须面对的难题。尤其当你负责的是车身控制模块或网关项目时&#xff0c;低功耗设计不…

作者头像 李华
网站建设 2026/1/30 1:27:19

HY-MT1.5-1.8B实时字幕生成案例:视频流翻译部署实战

HY-MT1.5-1.8B实时字幕生成案例&#xff1a;视频流翻译部署实战 随着全球化内容消费的快速增长&#xff0c;实时多语言字幕生成已成为视频平台、在线教育和跨国会议系统的核心需求。传统云端翻译方案存在延迟高、隐私风险大、依赖网络等痛点&#xff0c;难以满足低延迟、高安全…

作者头像 李华
网站建设 2026/2/2 17:08:16

餐酒吧COMMUNE幻师冲刺港股:9个月营收8.7亿,利润6670万

雷递网 雷建平 1月10日极物思维有限公司&#xff08;COMMUNE幻师&#xff09;日前递交招股书&#xff0c;准备在港交所上市。前9个月营收8.7亿&#xff0c;期内利润6670万COMMUNE幻师是一个餐酒吧概念品牌&#xff0c;融合了匠心饮品、精选佳肴与精心营造的氛围空间&#xff0c…

作者头像 李华
网站建设 2026/1/31 7:27:08

混元翻译模型1.5实战:多语言知识库构建

混元翻译模型1.5实战&#xff1a;多语言知识库构建 1. 引言&#xff1a;混元翻译模型的演进与应用场景 随着全球化信息流动的加速&#xff0c;高质量、低延迟的多语言翻译能力已成为企业构建国际化知识体系的核心需求。腾讯推出的混元翻译模型1.5&#xff08;HY-MT1.5&#x…

作者头像 李华