L2Cache快速入门教程:10分钟将Caffeine+Redis二级缓存接入Spring Boot(附完整配置)
L2Cache快速入门教程10分钟将CaffeineRedis二级缓存接入Spring Boot附完整配置【免费下载链接】l2cacheL2Cache 是一个基于 Caffeine Redis 的二级缓存框架。让缓存的使用在业务开发中更加简单、高效。项目地址: https://gitcode.com/gh_mirrors/l2/l2cacheL2Cache 是一个基于Caffeine Redis的分布式二级缓存框架兼容 Spring Cache 规范。本教程面向新手带你用 10 分钟在 Spring Boot 项目中完成 Caffeine 一级缓存 Redis 二级缓存的混合缓存接入引入 starter 依赖、配置 application.yml、实现一个极简 CacheService 即可开始使用全程无需手写缓存操作细节。一、为什么选择 L2Cache 二级缓存框架自己手写Caffeine Redis 双缓存时你很快会碰到这些问题缓存穿透查不到数据反复打到数据库需要额外存空值缓存击穿热点 key 过期瞬间大量请求同时回源多节点不一致A 节点更新了本地缓存B 节点还是旧值热 key 打爆 Redis单个热点 key 的网络 QPS 压垮 Redis。L2Cache 将这些痛点沉淀成了开箱即用的能力能力说明三级缓存组合仅 Caffeine / 仅 Redis / CaffeineRedis 混合按 cacheName 维度灵活切换缓存穿透防护自动存储空值NullValue并配置空值过期时间缓存击穿防护结合 CaffeinerefreshAfterWrite与synctrue过期后旧值先返回、异步刷新集群一致性通过 Redis 发布订阅或 Kafka在节点间同步失效/更新消息保证最终一致自动热 key 探测支持 Sentinel、jd-hotkey 两种方案自动把热 key 提升到一级缓存批量操作分页的批量 get / 批量淘汰避免大 key 请求 项目已在生产环境支撑单月 10 亿 GMV、全链路 35W QPS 压测稳定性经过大促流量验证。二、三步接入Maven 依赖 参考示例最快接入步骤第 1 步引入 starter 依赖starter 自动装载模式推荐l2cache-spring-boot-starter已发布到 Maven 中央仓库1.x 支持 JDK 82.x 支持 JDK 17dependency groupIdio.github.ck-jesse/groupId artifactIdl2cache-spring-boot-starter/artifactId versionx.x.x/version /dependency第 2 步可选clone 仓库看官方示例完整可运行的 Demo 在仓库的l2cache-example模块中包含注解方式、CacheService 方式、多端口多节点等全部场景git clone https://gitcode.com/gh_mirrors/l2/l2cache第 3 步配置 application.yml见下一节。配置完成后启动应用starter 会自动完成 Caffeine、Redisson、缓存同步策略的初始化无需额外编写启动类代码。⚠️ 自动装配说明Spring Boot 2.x 通过META-INF/spring.factories、Spring Boot 3.x 通过META-INF/spring/...AutoConfiguration.imports注册装配类具体见 l2cache-spring-boot-starter/Readme.md手动装配可用 EnableL2Cache.java 注解开启。三、application.yml 完整配置Caffeine Redis 混合缓存以下是 2.0.0 版本的最小可用配置完整样例参考仓库中l2cache-example/src/main/resources/application.ymll2cache: config: # Redisson 的yaml配置文件 redissonYamlConfig: redisson.yaml # 默认缓存配置 defaultConfig: # 是否存储空值默认true防止缓存穿透 allowNullValues: true # 空值过期时间单位秒 nullValueExpireTimeSeconds: 30 # 是否用一级缓存的过期时间替换二级缓存过期时间默认true简化配置 useL1ReplaceL2ExpireTime: true # 缓存类型caffeine / redis / composite cacheType: COMPOSITE # 组合缓存配置 composite: l1CacheType: caffeine l2CacheType: redis # 一级缓存格式与 Caffeine 官方 spec 完全一致 caffeine: defaultSpec: initialCapacity10,maximumSize200,refreshAfterWrite2m,recordStats # 针对指定缓存名的个性化配置cacheName 维度 specs: userCache: initialCapacity10,maximumSize200,refreshAfterWrite2m,recordStats # 二级缓存 redis: lock: false tryLock: true batchPageSize: 3 # 默认过期时间(ms) expireTime: 86400000 # 缓存同步策略推荐 redis 发布订阅 cacheSyncPolicy: type: redis topic: l2cache核心配置项速查配置项作用建议值cacheType缓存类型支持 caffeine / redis / compositeCOMPOSITE推荐allowNullValues存空值防穿透truerefreshAfterWriteCaffeine 写后刷新防击穿的推荐姿势按业务设定expireTimeRedis 默认过期时间ms按业务设定cacheSyncPolicy.type多节点一致性同步通道redis按需指定缓存类型2.0.0 新增configMap可为每个 cacheName 单独指定类型例如brandCache只走 Caffeine、goodsPriceRevisionCache只走 Redis其余走默认配置——这也是 L2Cache 相对 JetCache、J2Cache 的差异化能力之一动态缓存配置。Redisson 连接配置redisson.yamlsingleServerConfig: address: redis://127.0.0.1:6379 database: 0四、代码中使用实现一个 CacheService 缓存层推荐用法L2Cache 官方推荐的最佳实践是抽象出一个CacheService 缓存层业务代码只调用缓存层的 get/put/evict彻底屏蔽二级缓存细节也避免缓存注解随迭代散落各处。以官方示例 NewBrandCacheService 为模板你只需继承AbstractCacheService并实现缓存名和数据加载方法完整实现见 如何使用L2cache.mdComponent public class NewBrandCacheService extends AbstractCacheServiceInteger, BrandRespBO { public static final String CACHE_NAME newBrandCache; Override public String getCacheName() { return CACHE_NAME; } Override public BrandRespBO queryData(Integer brandId) { // 缓存未命中时执行从 DB 加载数据 return brandMapper.selectById(brandId); } }然后在 Controller 中直接调用参考 NewBrandCacheController.javaRequestMapping(/brand/getOrLoad) public BrandRespBO getOrLoad(Integer brandId) { return newBrandCacheService.getOrLoad(brandId); // 缓存命中直接返回未命中自动加载并写回 }一个 Service 即同时获得一级 Caffeine 读取 → 二级 Redis 读取 → DB 加载回写 → 空值防穿透 → 多节点失效同步 的全部能力还支持batchGet、batchEvict等批量方法。方式二Spring Cache 注解L2Cache 也兼容 Spring Cache 标准注解适合已有注解使用习惯的项目Cacheable(value userCache, key #userId, sync true) public User queryUserSync(String userId) { ... } CachePut(value userCache, key #userId) public User putUser(String userId, User user) { ... } CacheEvict(value userCache, key #userId) public String evictUser(String userId) { ... } 小贴士建议Cacheable始终搭配sync true可借助 Caffeine 的同步加载机制防止缓存击穿。五、进阶L2Cache 如何解决多节点缓存不一致多节点部署时各节点本地缓存的过期时间天然不一致。下图展示了 L2Cache 的处理思路统一过期时间点 过期时通知其他节点避免节点 B 拿到节点 A 已过期数据的问题实现上依赖缓存同步策略缓存更新/淘汰时通过 Redis 发布订阅推荐或 Kafka 向其他节点广播消息其他节点收到后失效本地缓存。选用 Redis pubsub 的考虑复用已有 Redis 中间件少维护一个 MQpubsub 消息不持久化、无消费者时直接丢弃——缓存本身只要求最终一致消费者重启前的消息丢了也无影响下次请求会从 Redis 重新加载到本地。详细配置样例可参考 缓存同步策略配置样例.md。热 key 探测可选在l2cache.config.hotkey下配置type: sentinel并设置规则即可自动识别热点参数并提升到一级缓存降低 Redis 热点压力配置说明见 热key探测-技术方案调研.md。六、常见问题排查启动失败、缓存不生效怎么办现象原因解决方案引入 l2cache 后项目启动失败与项目内 Spring 相关依赖版本冲突排除 l2cache 的spring-boot-starter-web、spring-cloud-context依赖使用项目自身版本缓存穿透不存在的 key 反复查 DB未开启空值存储保持allowNullValues: true并合理设置nullValueExpireTimeSeconds高并发下热点 key 过期瞬间 DB 压力大未利用 Caffeine 异步刷新spec 中配置refreshAfterWrite注解加sync true本地缓存疑似 OOM / 频繁 GCCaffeine 数据量大且命中率极低Caffeine 不适用于海量低命中场景如 3 千万用户的用户维度缓存改用redis或混合模式更多分析见 实战-l2cache高并发场景下出现OOM的分析和优化方案.md接入检查清单✅ pom 中已引入l2cache-spring-boot-starter✅ application.yml 配置了l2cache.configcacheType、caffeine、redis 三块✅ resources 下有 Redisson 连接配置文件✅ 实现了 CacheService或使用了Cacheable注解✅ 多节点部署时配置了cacheSyncPolicy七、总结与延伸阅读用 10 分钟走一遍本文加依赖 → 写配置 → 实现 CacheService你就拥有了带防穿透、防击穿、多节点一致性、热 key 探测能力的生产级二级缓存。 延伸阅读如何使用L2cache.md —— 完整使用手册含多 Redis 实例、批量操作、旧版本配置对照doc/Caffeine简介.md —— 一级缓存 Caffeine 原理速读doc/二级缓存基于注解的最佳实践用法.md —— Spring Cache 注解最佳实践doc/关于缓存的几个常见问题分析和处理方案.md —— 缓存常见问题与处理方案【免费下载链接】l2cacheL2Cache 是一个基于 Caffeine Redis 的二级缓存框架。让缓存的使用在业务开发中更加简单、高效。项目地址: https://gitcode.com/gh_mirrors/l2/l2cache创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

如何微调InternVL3_5-30B-A3B-Instruct:用SWIFT和XTuner打造专属领域模型的完整指南

如何微调InternVL3_5-30B-A3B-Instruct:用SWIFT和XTuner打造专属领域模型的完整指南

如何微调InternVL3_5-30B-A3B-Instruct:用SWIFT和XTuner打造专属领域模型的完整指南 【免费下载链接】InternVL3_5-30B-A3B-Instruct 项目地址: https://ai.gitcode.com/hf_mirrors/OpenGVLab/InternVL3_5-30B-A3B-Instruct InternVL3_5-30B-A3B-Instruct 是…

2026/8/26 13:54:54 阅读更多 →
不训练、不加模型、还能再省 32% 推理时间:上交 ParaTempo 把「置信度」重新定义了一遍

不训练、不加模型、还能再省 32% 推理时间:上交 ParaTempo 把「置信度」重新定义了一遍

不训练、不加模型、还能再省 32% 推理时间:上交 ParaTempo 把「置信度」重新定义了一遍 Hugging Face 每日论文(2026-08-24 精选) 8 月 24 日 Hugging Face 每日论文榜第五名的位置,是一篇没有任何新增训练的论文:上海…

2026/8/26 13:54:54 阅读更多 →
学一下Transform(TODO1)

学一下Transform(TODO1)

1 Transform基础 Transformer 是谷歌 2017 年提出、完全基于自注意力机制(Self‑Attention) 的深度学习基础架构,抛弃了 RNN/LSTM 的循环串行结构,支持输入序列全局并行计算,能够直接捕捉文本、图像等数据里长距离元素…

2026/8/26 13:54:54 阅读更多 →

最新新闻

5分钟上手StackExchange.Redis.Extensions:安装、配置与快速入门完整指南

5分钟上手StackExchange.Redis.Extensions:安装、配置与快速入门完整指南

5分钟上手StackExchange.Redis.Extensions:安装、配置与快速入门完整指南 【免费下载链接】StackExchange.Redis.Extensions StackExchange.Redis.Extensions is a library that extends StackExchange.Redis, making it easier to work with Redis in .NET applica…

2026/8/26 14:26:35 阅读更多 →
DPJ-83基于STM32单片机wifi智能寝室室内环境检测系统

DPJ-83基于STM32单片机wifi智能寝室室内环境检测系统

1、前言 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉洪核学长自己做的项目系统达不到老师的要求。为了大家能够顺利以及最少的精力通过毕设&#xf…

2026/8/26 14:26:35 阅读更多 →
我是Java程序员廖志伟

我是Java程序员廖志伟

📕我是廖志伟,一名Java领域优质创作者、CSDN博客专家、阿里云专家博主、51CTO专家博主 、产品软文专业写手、技术文章评审老师、技术类问卷调查设计师、幕后大佬社区创始人、开源项目贡献者、清华大学出版社签约作家。 📘不定期分享高并发、高…

2026/8/26 14:26:35 阅读更多 →
InternVL3.5-4B为何推理这么强?Cascade RL训练管线(MPO+GSPO)原理全解

InternVL3.5-4B为何推理这么强?Cascade RL训练管线(MPO+GSPO)原理全解

InternVL3.5-4B为何推理这么强?Cascade RL训练管线(MPOGSPO)原理全解 【免费下载链接】InternVL3_5-4B 项目地址: https://ai.gitcode.com/hf_mirrors/OpenGVLab/InternVL3_5-4B 如果你正在关注 InternVL3.5-4B 这个小体积多模态大模…

2026/8/26 14:26:35 阅读更多 →
4步蒸馏技术揭秘:MiniMax-H3 Turbo-SLA如何将30步压缩到4步

4步蒸馏技术揭秘:MiniMax-H3 Turbo-SLA如何将30步压缩到4步

4步蒸馏技术揭秘:MiniMax-H3 Turbo-SLA如何将30步压缩到4步 【免费下载链接】Minimax-h3-Turbo-SLA 项目地址: https://ai.gitcode.com/hf_mirrors/lightx2v/Minimax-h3-Turbo-SLA MiniMax-H3 Turbo-SLA 是一个面向图生视频(FL2V)场景…

2026/8/26 14:26:34 阅读更多 →
ajax的使用、json、jquery

ajax的使用、json、jquery

json其实就是一种字符串格式,可以用一种特殊格式的字符串表示对象function testAjax(){}success:function(list){}跨域:dataType:“jsonp”jsonp:"aaa"

2026/8/26 14:25:33 阅读更多 →

日新闻

Python random 模块常用函数详解:从入门到实战

Python random 模块常用函数详解:从入门到实战

目录 1. 引言2. 准备工作3. 基础随机函数4. 序列相关函数5. 随机种子与复现6. 实战案例7. 注意事项8. 常见问题与排查9. 总结 1. 引言 摘要: 本文系统介绍 Python 标准库 random 模块中最常用的随机数生成函数。内容涵盖基础随机函数(random()、unifor…

2026/8/26 0:00:40 阅读更多 →
《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》索引目录: 《Microsoft Sql server 2008 Internals》读书笔记--目录索引 在上篇文章中,主要介绍了创建数据库的基本语法和FileGroup的初步知识。需要注意的是: 关于FileGroup 如果你的系统是用Raid设备直接存…

2026/8/26 1:18:18 阅读更多 →
政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体已经从概念试点阶段,转入了政务服务的常态化落地应用;在实际使用过程中,它能自主理解办事需求、辅助完成填报申报、开展材料预审,并联动多个系统协同作业,真正嵌入到政务办理的全流程当中。但在落地推进过…

2026/8/26 1:18:18 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/25 3:38:12 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/25 3:38:18 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/25 3:38:23 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/26 3:50:20 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/25 10:31:12 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/26 1:24:05 阅读更多 →