springboot redisson 缓存入门与实战

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 缓存的并发安全和分布式痛点,还提供了丰富的企业级特性(如分布式锁、布隆过滤器)。通过本文的整合步骤和实战示例,可快速实现高性能、高可用的分布式缓存系统,适用于微服务、电商、金融等复杂业务场景。

相关推荐
swg32132120 小时前
Spring Boot 3.X Oauth2 认证服务与资源服务
java·spring boot·后端
gelald20 小时前
SpringBoot - 自动配置原理
java·spring boot·后端
@yanyu66620 小时前
07-引入element布局及spring boot完善后端
javascript·vue.js·spring boot
M--Y21 小时前
Redis常用数据类型
数据结构·数据库·redis
程序猿_极客1 天前
SpringBoot 三大参数注解详解:@RequestParam @RequestBody @PathVariable 区别及常用开发注解
java·spring boot·后端·面试八股文·springboot注释
小胖java1 天前
校园通衢公告枢纽系统
java·spring boot
mameng19981 天前
Redis遇到热点key如何解决
数据库·redis·缓存
小红的布丁1 天前
Redis 持久化详解:AOF、RDB 与混合持久化如何平衡性能和可靠性
数据库·redis·缓存
Hadoop_Liang1 天前
构建Spring Boot项目Docker镜像
spring boot·后端·docker
Flittly1 天前
【SpringAIAlibaba新手村系列】(14)MCP 本地服务与工具集成
java·spring boot·笔记·spring·ai