IntelliJ IDEA中Spring Boot 3.4.x+集成Redis 7.x:最新设置与实战指南

[复制链接]
发表于 2025-9-30 14:36:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
‌媒介

Spring Boot 3.4.x作为当前‌最新稳固版本‌,全面支持Java 17+与Jakarta EE 10规范。本文以‌Spring Boot 3.4.1‌和‌Redis 7.x‌为例,详解怎样在IDEA中快速接入Redis,涵盖‌最新依靠设置‌、‌数据序列化优化‌、‌缓存注解‌及‌高版本常见题目排查‌,助你把握企业级缓存方案!

‌一、环境要求

1. ‌根本环境



  • JDK 17+(保举OpenJDK 17/21)
  • IntelliJ IDEA 2023.1+
  • Redis 7.x(官网下载)
2. ‌项目初始化



  • 使用Spring Initializr创建项目,选择:

    • Spring Boot 3.4.x
    • 依靠项:Spring Web, Spring Data Redis, Lombok


二、依靠设置(Spring Boot 3.4.x+特性)

‌1. pom.xml关键依靠

  1. <!-- Spring Boot 3.4.x 父工程 -->
  2. <parent>
  3.     <groupId>org.springframework.boot</groupId>
  4.     <artifactId>spring-boot-starter-parent</artifactId>
  5.     <version>3.4.1</version>
  6. </parent>
  7. <!-- Redis Starter(默认Lettuce) -->
  8. <dependency>
  9.     <groupId>org.springframework.boot</groupId>
  10.     <artifactId>spring-boot-starter-data-redis</artifactId>
  11. </dependency>
  12. <!-- Jakarta JSON处理(兼容Redis序列化) -->
  13. <dependency>
  14.     <groupId>jakarta.json</groupId>
  15.     <artifactId>jakarta.json-api</artifactId>
  16.     <version>2.1.2</version>
  17. </dependency>
  18. <dependency>
  19.     <groupId>org.glassfish</groupId>
  20.     <artifactId>jakarta.json</artifactId>
  21.     <version>2.0.1</version>
  22. </dependency>
复制代码
  ‌注‌:Spring Boot 3.4.x默认使用‌Lettuce 6.3.x‌,无需额外设置毗连池。若需Jedis,需手动清除Lettuce并添加Jedis依靠。
  
‌三、Redis毗连设置

1. application.yml(保举格式)

  1. spring:
  2.   data:
  3.     redis:
  4.       host: localhost
  5.       port: 6379
  6.       password: # 无密码留空
  7.       database: 0
  8.       lettuce:
  9.         pool:
  10.           max-active: 8
  11.           max-idle: 4
  12.           min-idle: 0
  13.           max-wait: 2000ms
  14.       # 新版本支持客户端名称(监控监控识别)
  15.       client-name: springboot-app
复制代码
‌2. 自界说序列化(办理Jackson兼容性题目)

  1. @Configuration
  2. public class RedisConfig {
  3.     @Bean
  4.     public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
  5.         RedisTemplate<String, Object> template = new RedisTemplate<>();
  6.         template.setConnectionFactory(factory);
  7.         
  8.         // Key使用String序列化
  9.         template.setKeySerializer(RedisSerializer.string());
  10.         // Value使用JSON序列化(适配Jakarta)
  11.         template.setValueSerializer(buildJsonSerializer());
  12.         
  13.         return template;
  14.     }
  15.     private RedisSerializer<Object> buildJsonSerializer() {
  16.         ObjectMapper mapper = new ObjectMapper();
  17.         mapper.registerModule(new JavaTimeModule());
  18.         mapper.activateDefaultTyping(
  19.             mapper.getPolymorphicTypeValidator(),
  20.             ObjectMapper.DefaultTyping.EVERYTHING,
  21.             JsonTypeInfo.As.PROPERTY
  22.         );
  23.         return new GenericJackson2JsonRedisSerializer(mapper);
  24.     }
  25. }
复制代码

‌四、缓存注解实战(适配Spring 6.x+)

‌1. 启用缓存

  1. @SpringBootApplication
  2. @EnableCaching
  3. public class DemoApplication { ... }
复制代码
‌2. 服务层缓存示例

  1. @Service
  2. @CacheConfig(cacheNames = "userCache")
  3. public class UserService {
  4.     @Autowired
  5.     private UserRepository repository;
  6.     // 使用SpEL动态生成Key
  7.     @Cacheable(key = "#id + '_' + #type")
  8.     public User getUser(Long id, String type) {
  9.         return repository.findById(id).orElseThrow();
  10.     }
  11.     // 条件缓存(仅缓存长度>5的名称)
  12.     @Cacheable(key = "#name", condition = "#name.length() > 5")
  13.     public User getUserByName(String name) {
  14.         return repository.findByName(name);
  15.     }
  16.     // 事务性缓存更新(结合@Transactional)
  17.     @Transactional
  18.     @CachePut(key = "#user.id")
  19.     public User updateUser(@NonNull User user) {
  20.         return repository.save(user);
  21.     }
  22. }
复制代码

‌五、相应式Redis利用(可选)

‌1. 添加相应式依靠

  1. <dependency>
  2.     <groupId>org.springframework.boot</groupId>
  3.     <artifactId>spring-boot-starter-data-redis-reactive</artifactId>
  4. </dependency>
复制代码
‌2. 相应式模板使用

  1. @Autowired
  2. private ReactiveRedisTemplate<String, Object> reactiveTemplate;
  3. public Mono<Boolean> saveSession(String sessionId, User user) {
  4.     return reactiveTemplate.opsForValue()
  5.             .set("session:" + sessionId, user, Duration.ofMinutes(30));
  6. }
复制代码

‌六、常见题目与办理方案

‌Q1:Jackson序列化失败(Jakarta兼容性题目)



  • 征象‌:InvalidTypeIdException: Missing type id when trying to resolve subtype
  • ‌办理‌:

    • 确认添加了jakarta.json依靠。
    • 在RedisConfig中显式设置ObjectMapper(参考上文)。

‌Q2:Redis毗连池不收效



  • 缘故原由‌:Spring Boot 3.4.x默认启用Lettuce毗连池,无需额外设置。
  • ‌验证‌:通过/actuator/metrics/redis.pool.active端点监控监控毗连状态。
‌Q3:Spring Boot 3.4.x与Redis 7.x的TLS毗连



  • ‌设置‌:
  1. spring:
  2.   data:
  3.     redis:
  4.       url: rediss://localhost:6379  # SSL协议
  5.       ssl: true
  6.       client-type: lettuce
  7.       lettuce:
  8.         pool:
  9.           enabled: true
  10.         ssl:
  11.           key-store-type: PKCS12
  12.           key-store: classpath:keystore.p12
  13.           key-store-password: 123456
复制代码

总结

Spring Boot 3.4.x在Redis集成上进一步优化了性能与兼容性,支持最新的Jakarta尺度和相应式编程。本文从‌依靠设置‌到‌高级特性‌,提供了一套完备的生产级办理方案。
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表