Spring Boot3 Redisson 项目地址
https://gitee.com/supervol/loong-springboot-study
(记得给个start,感谢)
Redisson 介绍
在分布式系统中,缓存是提升性能、减轻数据库压力的核心组件。Redisson 并非简单的 Redis 客户端,而是基于 Redis 实现的 分布式服务框架,它不仅封装了 Redis 的基础操作,还提供了分布式缓存、分布式锁、分布式集合等企业级特性,完美解决了传统 Redis 客户端在分布式场景下的痛点(如并发安全、缓存一致性)。
Spring Boot 3 作为主流的 Java 开发框架,对缓存提供了统一抽象(Spring Cache
),支持集成多种缓存实现(如 Caffeine、Redis、Redisson)。将 Redisson 与 Spring Boot 3 整合,可充分利用 Redisson 的 分布式缓存能力,同时享受 Spring Cache 注解式开发的便捷性,适用于微服务、分布式系统等复杂场景。
Redisson 对比
Spring Boot 自带 RedisCacheManager
(基于 spring-boot-starter-data-redis
),与 Redisson 缓存相比,差异如下:
特性 | Spring 默认 Redis 缓存(RedisCacheManager) | Redisson 缓存(RedissonCacheManager) |
---|---|---|
分布式特性 | 基础支持(仅缓存存储) | 全面支持(分布式锁、布隆过滤器、分布式集合) |
并发安全 | 弱(无内置锁机制,易出现并发问题) | 强(基于 Redis 分布式锁,保证原子性) |
缓存淘汰策略 | 仅支持 Redis 原生策略(如 LRU) | 支持本地缓存 + Redis 双级淘汰(更灵活) |
序列化支持 | 需手动配置(默认 JDK 序列化) | 内置 Jackson/Kryo/FST 等多种序列化 |
连接池优化 | 基础连接池(需手动配置 lettuce/jedis) | 内置高效连接池(自动优化) |
复杂数据结构缓存 | 仅支持 String/Hash(需手动转换) | 支持 List/Set/Map/SortedSet 等 |
Redisson 示例
1. 前置条件
- Spring Boot 3.x :推荐 Redisson 版本 3.19.0+(官方明确支持 Spring Boot 3 的最低版本)
- Java 版本:Spring Boot 3 强制要求 Java 17+,Redisson 3.19+ 已适配 Java 17
- Redis 版本:推荐 Redis 6.0+(Redisson 支持 Redis 2.8+,但高版本 Redis 性能更优)
2. 代码位置
请参考项目地址中 springboot-cache/springboot-redisson 模块代码。
Redisson 高级
Redisson 针对分布式缓存的常见问题(缓存穿透、缓存击穿、缓存雪崩)提供了成熟解决方案,无需额外开发。
1. 缓存序列化配置
默认情况下,Redisson 使用 JDK 序列化 (性能差、序列化后数据体积大),推荐替换为 Jackson 或 Kryo 序列化(高效、轻量)。
2. 解决缓存穿透
缓存穿透 :查询不存在的数据(如用户 id=-1),导致请求直接穿透到数据库,压垮数据库。
Redisson 解决方案 :使用 布隆过滤器(Bloom Filter) 提前过滤不存在的 key。
3. 解决缓存击穿
缓存击穿 :热点 key 过期时,大量请求同时穿透到数据库(如秒杀商品缓存过期)。Redisson 解决方案 :使用 分布式锁(RLock) 保证同一时间只有一个请求更新缓存。
4. 解决缓存雪崩
缓存雪崩 :大量缓存 key 同时过期,或 Redis 集群宕机,导致所有请求穿透到数据库。
Redisson 解决方案:
- 过期时间随机化:给不同缓存 key 设置不同的过期时间(如全局 30 分钟 ± 5 分钟),避免同时过期。
- Redis 集群:通过 Redisson 配置 Redis 集群 / 哨兵模式,保证 Redis 高可用。
- 缓存降级 / 熔断:结合 Spring Cloud 组件(如 Sentinel),当缓存不可用时,返回默认数据,避免数据库压垮。
Redisson注意
- 版本兼容性:严格遵循 Spring Boot 3 → Redisson 3.19+ → Java 17 的版本匹配,避免依赖冲突。
- 连接池调优 :根据业务并发量调整
connectionPoolSize
(连接池容量),过小会导致连接等待,过大则浪费资源(推荐 10-50 之间)。 - 缓存键规范 :统一缓存键命名格式(如
cacheName:key
),避免不同业务缓存键冲突。 - 监控与告警:Redisson 支持集成 Prometheus/Grafana 监控缓存命中率、连接数等指标,生产环境需配置告警(如缓存命中率低于 80% 时告警)。
- 缓存一致性 :若数据库更新后缓存未及时更新(如分布式事务场景),可结合 Canal 监听数据库 binlog,同步更新缓存。
总结
Redisson 是 Spring Boot 3 分布式缓存的最优选择之一,它不仅解决了传统 Redis 缓存的并发安全和分布式痛点,还提供了丰富的企业级特性(如分布式锁、布隆过滤器)。通过本文的整合步骤和实战示例,可快速实现高性能、高可用的分布式缓存系统,适用于微服务、电商、金融等复杂业务场景。