当前位置: 首页 > news >正文

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


文章转载自:

http://drPQ059A.chxsn.cn
http://S29KJndS.chxsn.cn
http://3Z9b3HZa.chxsn.cn
http://9XxPvLNz.chxsn.cn
http://KlcflNtL.chxsn.cn
http://sRwb0uys.chxsn.cn
http://z3lMFphw.chxsn.cn
http://c1OObsOZ.chxsn.cn
http://oLSwFSzD.chxsn.cn
http://BoedOqbH.chxsn.cn
http://wuh5wWcJ.chxsn.cn
http://JOZVSXx8.chxsn.cn
http://O4bOEpTo.chxsn.cn
http://wOLHrajY.chxsn.cn
http://d2MAiMGe.chxsn.cn
http://9dGoSk4y.chxsn.cn
http://D3jSyLGj.chxsn.cn
http://wclvdmP3.chxsn.cn
http://Ug3BKe4y.chxsn.cn
http://jCrAGoJb.chxsn.cn
http://q9nusbDS.chxsn.cn
http://z6623AGp.chxsn.cn
http://293XTwAI.chxsn.cn
http://LRkiovmq.chxsn.cn
http://elEHvHrD.chxsn.cn
http://HXS33uIH.chxsn.cn
http://RYyqINOD.chxsn.cn
http://jOIrSOKu.chxsn.cn
http://ueMK9sB4.chxsn.cn
http://FYwKmWGD.chxsn.cn
http://www.dtcms.com/a/372974.html

相关文章:

  • Redis 主从复制、哨兵与 Cluster 集群部署
  • NLP自然语言处理:开启人机交互新时代
  • Spine文件导入Unity流程
  • 35.Java 中的泛型是什么
  • commons-compress
  • Acwing算法基础课--高精度加减乘除
  • 【前端】Promise对象的实现-JavaScript
  • 第5篇 pytorch卸载方法与更换版本
  • 56.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--新增功能--实现手机邮箱找回密码
  • 月2期学习笔记
  • [新启航]新启航激光频率梳方案:击穿光学遮挡壁垒,以 2μm 精度实现 130mm 深孔 3D 轮廓测量
  • 51单片机驱动数码管
  • 51单片机基础结构及编程要点
  • Git Bash 别名
  • 福彩双色球第2025104期篮球号码分析
  • C++模板进阶:从基础到高级实战技巧
  • 力扣每日一题p1317 将整数转换…… 题解
  • 量子密码:后量子的加密
  • 【 ​​SQL注入漏洞靶场】第二关文件读写
  • wpf .netcore 导出docx文件
  • 基于开源AI智能名片链动2+1模式S2B2C商城小程序的移动互联网人气氛围营造机制研究
  • 六级第一关——下楼梯
  • Bug排查日记的技术文章大纲-AI生成
  • CentOS/Ubuntu安装显卡驱动与GPU压力测试
  • wpf .netcore 导出pdf文件
  • 6个步骤实现Postman接口压力测试
  • Linux-expect脚本编程
  • Dart 聊天后端开发(MongoDB + WebSocket)
  • Linux初始——自动化构建
  • Linux之GDB调试