alibaba JetCache:给 Java 缓存这件事做了一层统一抽象 文章目录alibaba JetCache给 Java 缓存这件事做了一层统一抽象1、它解决的真问题2、核心能力3、上手最简形态4、自动刷新与穿透保护5、脱离注解的编程式用法6、Spring Boot 接入7、它适合什么场景8、版本与兼容性alibaba JetCache给 Java 缓存这件事做了一层统一抽象JetCache 在 GitHub 上已经拿到 5.5K Star 了。阿里巴巴开源了这个 Java 缓存框架把 Redis、Caffeine、Tair 这些相互不兼容的缓存方案统一到同一套 API 和注解下面。Spring Cache 能做的它都能做做不了的 TTL、多级缓存、分布式自动刷新它也补上了。1、它解决的真问题写 Java 后端躲不开缓存。本地缓存用 Caffeine分布式缓存用 Redis两套 API 完全不一样代码里到处是if (cache.contains(key))这类零碎判断。Spring Cache 注解虽好但原生不支持 TTL也不支持多级缓存刷新还得自己写。JetCache 把这层磨平了。一个Cached注解下去本地缓存、远程缓存、本地远程两级缓存配置里一开关就切换业务代码不动。Cache接口长得像Mapget、put、computeIfAbsent都在迁移成本很低。2、核心能力注解声明式方法缓存原生支持 TTL 和两级缓存统一的CacheAPI可以脱离注解直接编码操作分布式环境下的自动刷新和分布式锁2.7 版本支持跨 JVM 实例的本地缓存失效异步访问基于 Redis Lettuce 客户端键生成和值序列化策略都可以定制键转换器支持 fastjson2、jackson、jackson3接入 Spring Bootstarter配置文件一贴就能跑3、上手最简形态给方法加缓存就一行注解。expire 3600表示 3600 秒后过期cacheType CacheType.REMOTE指定走远程缓存。键由 JetCache 根据参数自动生成。publicinterfaceUserService{Cached(expire3600,cacheTypeCacheType.REMOTE)UsergetUserById(longuserId);}需要自定义 key用 SpEL 表达式Cached(nameuserCache-,key#userId,expire3600)UsergetUserById(longuserId);CacheUpdate(nameuserCache-,key#user.userId,value#user)voidupdateUser(Useruser);CacheInvalidate(nameuserCache-,key#userId)voiddeleteUser(longuserId);读取、更新、删除三个注解配齐CRUD 不用手动维护缓存。4、自动刷新与穿透保护分布式场景下缓存过期瞬间压垮数据库是常见问题。JetCache 的CacheRefresh可以在缓存还活着的时候后台异步刷新stopRefreshAfterLastAccess控制多久没访问就停止刷新。CachePenetrationProtect防止并发时多个线程同时回源加载。Cached(expire3600,cacheTypeCacheType.REMOTE)CacheRefresh(refresh1800,stopRefreshAfterLastAccess3600,timeUnitTimeUnit.SECONDS)CachePenetrationProtectBigDecimalsummaryOfToday(longcategoryId);5、脱离注解的编程式用法有时候注解不够灵活需要直接拿Cache实例。QuickConfig构造一个两级缓存本地最多 50 个元素LRU更新时通过广播让所有 JVM 实例失效本地缓存。QuickConfigqcQuickConfig.newBuilder(userCache).expire(Duration.ofSeconds(100)).cacheType(CacheType.BOTH).localLimit(50).syncLocal(true).build();userCachecacheManager.getOrCreateCache(qc);userCache.computeIfAbsent(1234567L,(key)-loadUserFromDataBase(1234567L));异步 API 也在CacheGetResult返回一个CompletionStage配合tryLockAndRun实现分布式锁。6、Spring Boot 接入依赖加进来dependencygroupIdcom.alicp.jetcache/groupIdartifactIdjetcache-starter-redis/artifactIdversion${jetcache.latest.version}/version/dependency启动类加EnableMethodCacheapplication.yml 配一下本地和远程缓存类型、键转换器、序列化器、连接池就齐活了。7、它适合什么场景业务里有高频读、低频写的方法希望加缓存又不想自己拼装注解和缓存管理器同时用本地缓存和 Redis想让两级缓存自动协同单机部署后期可能切到分布式希望切换成本最小团队里缓存写法五花八门需要一套统一抽象做规范8、版本与兼容性2.8 及以上版本要求 JDK 17支持 Spring Framework 6.x 和 Spring Boot 3.x。2.7 及更早版本兼容 JDK 8老项目想平滑接入也留了路。Java 缓存这块以前是个琐碎活Caffeine 管本地、Redis 管远程、Spring Cache 管注解、自己管刷新和锁。JetCache 把这几样捏到一起注解一套、API 一套开发期不用关心底层缓存是什么运维期可以按需切换。做 Java 后端如果还在手写缓存协调逻辑可以试试。Spring Cache 管注解、自己管刷新和锁。JetCache 把这几样捏到一起注解一套、API 一套开发期不用关心底层缓存是什么运维期可以按需切换。做 Java 后端如果还在手写缓存协调逻辑可以试试。

相关新闻

最新新闻

抖音黑科技兵马俑总站源头简博科技 | 世界杯经济效应释放,抖音电商运动消费报告揭示短视频带货新增量

抖音黑科技兵马俑总站源头简博科技 | 世界杯经济效应释放,抖音电商运动消费报告揭示短视频带货新增量

2026年7月6日,抖音电商发布《2026抖音电商运动消费趋势报告》。报告显示,世界杯观赛季开启以来,平台足球相关商品成交额同比增长113%,2000余个运动品牌集中上新。这组数据揭示了一个趋势:赛事经济正与短视频直播生态深…

2026/7/8 13:29:48
3分钟掌握AcFunDown:A站视频本地化保存的终极指南

3分钟掌握AcFunDown:A站视频本地化保存的终极指南

3分钟掌握AcFunDown:A站视频本地化保存的终极指南 【免费下载链接】AcFunDown 包含PC端UI界面的A站 视频下载器。支持收藏夹、UP主视频批量下载 😳仅供交流学习使用喔 项目地址: https://gitcode.com/gh_mirrors/ac/AcFunDown 你是否曾经遇到过这…

2026/7/8 13:29:48
想买好用的防水轨道插座?这几家高口碑正规厂家放心选不踩坑

想买好用的防水轨道插座?这几家高口碑正规厂家放心选不踩坑

家里装修规划厨房、阳台用电,或者做餐饮明档、户外展位设计的朋友应该都有体会:潮湿区域用传统固定插座,总担心泼溅水引发漏电风险,想换灵活的电源轨道系统又怕选到品控不过关的防水款,反而留下安全隐患。今天就给大家…

2026/7/8 13:29:48
数据产业服务分类(45)——框架设计——顶层类别框架

数据产业服务分类(45)——框架设计——顶层类别框架

价值模型按照域框架,对顶层服务进行分类,并形成数据产业服务价值链模型如下。图 9-5数据产业服务价值链模型顶层类别基于数据产业服务域,将每个域分解成多个服务类别,作为数据产业服务分类的顶层类别。图 9-6 数据产业服务顶层框架…

2026/7/8 13:29:48
IT外包为何永远在招人?

IT外包为何永远在招人?

这是知乎上面关于IT外包的一个热门问题: 为什么it外包永远在招人?- 知乎 https://www.zhihu.com/question/489128199 可以来看看网友们都有哪些关于外包的看法,相信会刷新你对外包的认知。 知乎用户匿名用户 人在外包,刚吃过…

2026/7/8 13:29:48
字节Seedance 2.5今日正式上线——30秒4K原生视频、50路参考输入,国产AI视频彻底变天了

字节Seedance 2.5今日正式上线——30秒4K原生视频、50路参考输入,国产AI视频彻底变天了

我第一时间冲进去试了 今天是个值得记住的日子。 不是因为什么节气,是因为字节跳动的Seedance 2.5正式上线了。 说实话,从6月23日火山引擎FORCE大会上它第一次露面,我就一直在等。当时台上demo放出来的时候,我心里就一个念头&…

2026/7/8 13:24:48

月新闻