springboot redisson 缓存入门与实战

发布于:2025-09-09 ⋅ 阅读:(28) ⋅ 点赞:(0)

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 注意

  1. 版本兼容性:严格遵循 Spring Boot 3 → Redisson 3.19+ → Java 17 的版本匹配,避免依赖冲突。
  2. 连接池调优:根据业务并发量调整 connectionPoolSize(连接池容量),过小会导致连接等待,过大则浪费资源(推荐 10-50 之间)。
  3. 缓存键规范:统一缓存键命名格式(如 cacheName:key),避免不同业务缓存键冲突。
  4. 监控与告警:Redisson 支持集成 Prometheus/Grafana 监控缓存命中率、连接数等指标,生产环境需配置告警(如缓存命中率低于 80% 时告警)。
  5. 缓存一致性:若数据库更新后缓存未及时更新(如分布式事务场景),可结合 Canal 监听数据库 binlog,同步更新缓存。

总结

        Redisson 是 Spring Boot 3 分布式缓存的最优选择之一,它不仅解决了传统 Redis 缓存的并发安全和分布式痛点,还提供了丰富的企业级特性(如分布式锁、布隆过滤器)。通过本文的整合步骤和实战示例,可快速实现高性能、高可用的分布式缓存系统,适用于微服务、电商、金融等复杂业务场景。


网站公告

今日签到

点亮在社区的每一天
去签到