基于 SpringBoot 主流数据缓存框架整体分为三大类:
Spring 缓存抽象层(统一注解规范,无实际缓存存储)
本地进程缓存框架(单机内存缓存,不跨服务)
分布式缓存框架(跨服务 / 集群共享缓存)
下面逐个框架详细拆解:核心功能、核心特点、优点、缺点、适用场景,最后附选型建议。
一、Spring Cache 缓存抽象层
核心简介
SpringBoot 官方提供的缓存编程抽象规范,不是具体缓存实现,仅提供注解式缓存编程模型,底层可无缝切换 Caffeine/Redis/Ehcache/Guava 等任意缓存实现。
主要功能
注解式声明缓存:
@Cacheable、@CachePut、@CacheEvict、@Caching、@CacheConfig自动实现查询缓存、更新缓存、删除缓存逻辑
支持自定义 Key、条件缓存、异步缓存、缓存过期配置
业务代码零侵入,底层缓存实现可随时替换
核心特点
基于 AOP 动态代理实现,无业务侵入
统一缓存 API,屏蔽底层缓存框架差异
仅做抽象调度,不负责缓存存储、淘汰、持久化
优缺点
优点
标准化注解,学习成本低
业务与缓存底层解耦,切换框架无需改业务代码
SpringBoot 原生集成,开箱即用
缺点
仅基础缓存能力,无分布式锁、缓存击穿高级防护、多级缓存等能力
复杂缓存策略需依赖底层框架实现
应用场景
所有 SpringBoot 项目基础缓存架构标配,必用抽象层,搭配任意本地 / 分布式缓存底层实现。
二、本地进程缓存框架(单机内存、仅当前服务实例共享)
1. Caffeine(目前最强本地缓存)
核心简介
基于 Java8 开发的高性能本地缓存,采用 Window TinyLFU 淘汰算法,是目前性能、命中率综合最优的本地缓存框架,SpringBoot 首选本地缓存。
主要功能
内存键值缓存,支持基于容量、基于时间双向过期淘汰
异步缓存加载、自动刷新、缓存统计监控
支持软引用 / 弱引用,JVM 内存不足自动回收缓存
适配 Spring Cache 注解
核心特点
吞吐量、命中率远超 Guava、Ehcache
低延迟、高并发友好,内存占用可控
配置极简,支持手动 API + 注解两种使用方式
优缺点
优点
业界性能天花板,并发吞吐是 Guava 的 2~5 倍
淘汰算法优秀,缓存命中率极高
轻量无依赖、API 简洁、内置监控
无 GC 压力,适合高并发单机场景
缺点
仅单机进程内缓存,不支持分布式共享
原生无磁盘持久化,重启缓存丢失
应用场景
微服务单实例本地二级缓存
系统字典、配置常量、基础数据缓存
单机热点接口缓存、低延迟高频查询缓存
高并发项目本地缓存首选
2. Guava Cache(谷歌老牌本地缓存)
核心简介
Google 开源经典本地缓存,早期 SpringBoot 项目标配,基于 LRU 淘汰算法,目前已逐步被 Caffeine 替代。
主要功能
容量淘汰、定时过期、自动缓存加载
并发安全、缓存自动回收、简单监控统计
适配 Spring Cache
核心特点
生态成熟、文档丰富、老旧项目存量极大
基于 LRU 最近最少使用淘汰策略
优缺点
优点
简单易用、并发安全、零学习成本
社区成熟,兼容所有 Java 项目
缺点
LRU 算法命中率远低于 Caffeine
性能落后 Caffeine,高并发下吞吐瓶颈明显
Google 已停止大版本迭代,逐步淘汰
应用场景
老旧 SpringBoot 项目维护迭代
低并发、简单单机临时缓存
不想引入新框架的极简缓存场景
3. Ehcache(传统企业级本地缓存)
核心简介
老牌 Java 缓存框架,符合 JSR-107 缓存标准,支持内存 + 磁盘双存储,SpringBoot 原生完美适配。
主要功能
堆内缓存、堆外内存缓存(规避 FullGC)
磁盘持久化,服务重启缓存不丢失
支持简易广播式集群、事务缓存、多级缓存
丰富的过期、淘汰策略配置
核心特点
唯一原生支持缓存持久化的本地框架
支持堆外内存,适合大缓存数据
兼容 Java 缓存标准,企业传统项目常用
优缺点
优点
磁盘落地持久化,重启不丢缓存数据
堆外内存存储,减少 JVM GC 压力
支持简易本地节点集群
缺点
性能远低于 Caffeine、Guava
配置繁琐、笨重冗余
集群能力弱,无法支撑大规模分布式
应用场景
需要缓存持久化的单机应用
传统政务、企业老旧系统迁移
大缓存数据、不想重启丢失缓存的场景
4. JDK ConcurrentHashMap(原生极简缓存)
核心简介
JDK 原生并发容器,无任何第三方依赖,最简单粗暴的本地缓存实现。
主要功能
线程安全键值存储
纯内存缓存,无额外封装能力
核心特点
零依赖、无需引入任何框架
原生 JDK 支持,最轻量
优缺点
优点
无第三方依赖、极简、零成本
并发安全,读写性能尚可
缺点
无过期、无淘汰、无监控、无自动清理
无容量限制,极易造成内存溢出
不支持缓存注解,纯硬编码
应用场景
超小型项目临时缓存
简单全局常量、临时变量缓存
不允许引入第三方框架的极简场景
三、分布式缓存框架(跨服务 / 集群多实例共享缓存)
1. Redis(业界主流分布式缓存)
核心简介
开源高性能键值 NoSQL,目前互联网项目分布式缓存事实标准,支持多数据结构、高可用集群。
主要功能
支持 String/Hash/List/Set/ZSet 等 5 大基础数据结构
自动过期、内存淘汰、RDB/AOF 持久化
主从复制、哨兵、集群分片高可用
Lua 脚本、发布订阅、事务、限流、计数器、排行榜
核心特点
单线程模型,高性能低阻塞
功能最全、生态最广、所有中间件均兼容
可做缓存、消息队列、限流、分布式锁、延迟队列
优缺点
优点
跨服务分布式共享,支持集群扩容
功能极强,不止是缓存,可承载多种业务能力
社区生态第一,运维工具、文档、方案完善
缺点
需自行处理缓存穿透、击穿、雪崩问题
单机内存有上限,超大容量需集群分片
运维有一定成本
应用场景
微服务全局共享缓存、用户会话共享
电商热点商品、秒杀、排行榜、限流
分布式锁、延迟队列、计数器、权限缓存
2. Redisson(Redis 增强客户端框架)
核心简介
基于 Redis 封装的 Java 客户端,SpringBoot 微服务标配框架,屏蔽 Redis 底层复杂操作,提供一站式分布式能力。
主要功能
完整封装 Redis 所有命令,面向对象编程
内置可重入分布式锁、公平锁、读写锁、红锁
分布式限流、分布式集合、布隆过滤器、分布式定时任务
完美适配 Spring Cache 注解
核心特点
把 Redis 底层复杂度完全封装,开箱即用
一站式解决微服务分布式常见问题
原生适配 Spring 生态,无缝整合
优缺点
优点
不用手写 Redis 分布式锁、限流等复杂逻辑
API 面向对象,开发效率极高
高可用、自动重试、连接池管理完善
缺点
重度依赖 Redis,无法脱离 Redis 独立使用
功能丰富略显厚重,学习成本略高
应用场景
微服务集群分布式缓存
需要分布式锁、限流、幂等性控制的项目
不想原生硬编码 Redis 命令的开发场景
3. JetCache(阿里开源统一多级缓存框架)
核心简介
阿里开源一站式缓存框架,同时整合本地缓存 + 分布式缓存,底层可插拔适配 Caffeine/Guava/Redis/Tair。
主要功能
天然支持多级缓存:本地缓存 + Redis 分布式缓存
注解式缓存,比 Spring Cache 功能更强
内置缓存自动刷新、缓存预热、防击穿、分布式统一过期
底层无缝切换 Caffeine、Redis 等实现
核心特点
一套注解同时搞定本地 + 分布式缓存
内置高并发缓存防护策略,无需手动处理雪崩 / 击穿
配置极简,兼容 Spring 生态
优缺点
优点
天然支持二级缓存,性能比单纯 Redis 更高
内置缓存问题解决方案,业务无需额外编码
底层可随时切换,适配性极强
缺点
生态普及度不如 Spring Cache+Redis
国内小众框架,第三方教程、案例偏少
应用场景
高并发电商、金融项目需要本地 + Redis 二级缓存
需要自动缓存刷新、缓存预热的业务
想统一管理本地和分布式缓存的项目
4. Memcached(老牌分布式缓存)
核心简介
极简分布式内存缓存,仅支持基础 KV 存储,早期互联网常用,现已基本被 Redis 淘汰。
主要功能
简单字符串 KV 缓存、LRU 内存淘汰
高性能内存吞吐,专注纯缓存场景
优缺点
优点:极简、吞吐高、内存占用低
缺点:无复杂数据结构、无持久化、无事务、无集群高级能力
应用场景
仅老旧历史项目维护,新项目完全不推荐。
四、框架选型总结 & 推荐方案
核心选型原则
本地缓存优先选 Caffeine,全面替代 Guava/Ehcache
分布式缓存统一用 Redis+Redisson 行业标配
高并发多级缓存直接上 JetCache,省去自己封装二级缓存
所有项目必用 Spring Cache 注解抽象层,解耦业务与缓存底层。