本地进程缓存

发布时间:2026/8/20 8:26:08

本地进程缓存
本地进程缓存时使用本地的JVM资源去存储数数减少数据库和redis等中间件的压力并且远程中间件与进程之间传输数据会经过网络传输会影响一定的性能为了加快数据响应提高用户使用体感我们可以引入本地进程缓存来加快进程响应速度。但是本地进程缓存的资源有限所以我们要考虑以最大收益来使用本地进程缓存它的核心使用场景如下1.读多写少、可容忍短暂数据不一致的热点基础数据字典、地区码、系统配置、公告、商品类目2.短期临时数据接口防重、限流计数、验证码、临时 Token3.二级缓存架构Caffeine (本地进程缓存) → Redis → DB加速热点查询、削峰不适合1.强一致性核心业务库存、订单、支付、账户余额、实时价格本地进程缓存无法保证集群环境下的强一致性2.全局共享状态分布式会话、全局锁、全局 ID因为本地进程缓存只能将数据保存在本地JVM,在微服务情形下无法实现全局共享状态3.需要长期持久保存的数据4.高频实时更新的数据三种主流的实现方式1.使用java原生 ConcurrentHashMap,线程安全、原生无依赖无自动过期 / 容量淘汰仅用于少量临时数据可能会出现内存泄漏需要谨慎防范import java.util.Map; import java.util.concurrent.ConcurrentHashMap; public class SimpleLocalCache { // 全局进程内存缓存 private static final MapString, Object LOCAL_CACHE new ConcurrentHashMap(); // 存入 public static void put(String key, Object value) { LOCAL_CACHE.put(key, value); } // 读取 public static Object get(String key) { return LOCAL_CACHE.get(key); } // 删除 public static void remove(String key) { LOCAL_CACHE.remove(key); } // 清空 public static void clear() { LOCAL_CACHE.clear(); } public static void main(String[] args) { put(user:1001, 张三); System.out.println(get(user:1001)); } }2.Caffeineimport com.github.benmanes.caffeine.cache.Cache; import com.github.benmanes.caffeine.cache.Caffeine; import com.github.benmanes.caffeine.cache.LoadingCache; import java.util.concurrent.TimeUnit; public class CaffeineCacheDemo { public static void main(String[] args) { // 1. 基础手动缓存 CacheString, String cache Caffeine.newBuilder() .maximumSize(1000) // 最大缓存条数LRU自动淘汰冷门数据 .expireAfterWrite(5, TimeUnit.MINUTES) // 写入后5分钟过期 .expireAfterAccess(2, TimeUnit.MINUTES)// 2分钟未访问则过期 .removalListener((key, val, cause) - { System.out.println(缓存失效 key: key 原因: cause); }) .build(); // 读写 cache.put(dict:area:100, 北京市); String val cache.getIfPresent(dict:area:100); System.out.println(val); cache.invalidate(dict:area:100); // 删除指定key cache.cleanUp(); // 主动清理过期缓存 // 2. LoadingCache自动加载数据源无缓存时自动查库 LoadingCacheString, String loadingCache Caffeine.newBuilder() .maximumSize(1000) .expireAfterWrite(5, TimeUnit.MINUTES) .refreshAfterWrite(1, TimeUnit.MINUTES) // 后台定时刷新 .build(key - loadFromDb(key)); // 数据加载函数 String data loadingCache.get(dict:area:200); System.out.println(data); } // 模拟数据库查询 private static String loadFromDb(String key) { System.out.println(查询数据库 key); return key -data; } }SpringBoot 集成 Caffeine Cacheable 注解Configuration EnableCaching public class CaffeineConfig { Bean public CacheManager caffeineCacheManager() { CaffeineCacheManager cacheManager new CaffeineCacheManager(); cacheManager.setCaffeine(Caffeine.newBuilder() .maximumSize(2000) .expireAfterWrite(5, TimeUnit.MINUTES)); return cacheManager; } } Service public class DictService { // 存入本地缓存 Cacheable(value localDictCache, key #code) public String getDict(String code) { // 查数据库逻辑 System.out.println(真实查询数据库: code); return 字典值- code; } // 更新时清除缓存 CacheEvict(value localDictCache, key #code) public void updateDict(String code) { // 更新数据库逻辑 } }3.Guava Cacheimport com.google.common.cache.CacheBuilder; import com.google.common.cache.LoadingCache; import com.google.common.cache.CacheLoader; import java.util.concurrent.TimeUnit; public class GuavaCacheDemo { public static void main(String[] args) { LoadingCacheString, String cache CacheBuilder.newBuilder() .maximumSize(1000) .expireAfterWrite(5, TimeUnit.MINUTES) .build(new CacheLoaderString, String() { Override public String load(String key) { return key -guava-data; } }); } }本地进程缓存的特质1.JVM 堆内存缓存仅当前进程可见重启 / 部署后数据丢失集群多实例不共享2.毫秒 / 微秒级读取减少 DB/Redis 请求削峰降延迟3.不能用于强一致性业务、全局分布式状态4.务必设置 maximumSize 上限 TTL 过期策略防止 OOM 与内存泄漏

相关新闻

2026 烘箱烤炉传感器怎么选 M50稳定运行3年零故障案例

2026 烘箱烤炉传感器怎么选 M50稳定运行3年零故障案例

2026/8/20 8:12:00

深圳某锂电池模组制造企业,主要为国内 top5 新能源汽车厂商供应电池 Pack。## 前言 在锂电池制造过程中,烘箱产线扮演着至关重要的角色。电池模组在组装后需要经过高温烘烤工序,以固化胶水、去除水分、确保电芯之间的紧密粘合,这对…

【桁架】基于matlab三维桁架优化以实现最大刚度【含Matlab源码 15893期】含报告

【桁架】基于matlab三维桁架优化以实现最大刚度【含Matlab源码 15893期】含报告

2026/8/20 7:58:08

💥💥💥💥💥💥💞💞💞💞💞💞💞💞欢迎来到海神之光博客之家💞💞💞&#x1f49…

黑灯工厂中AI视觉检测的实现条件——AI检测的检出边界与工程原理

黑灯工厂中AI视觉检测的实现条件——AI检测的检出边界与工程原理

2026/8/20 7:45:38

黑灯工厂中检测工位的无人化依赖设备的自动亮度监测、自动相机校准和次品收集的自动切换三个条件。AI检测的检出边界由光源方案决定,只能检表面可见的缺陷。以下以磁材企业和密封件集团的设备方案为样本做分析。黑灯运行的光源自动监测LED光源在数万小时工作后亮度衰…

基于毫米波雷达与Wi-Fi模组的低功耗智能安防哨兵设计与实现

基于毫米波雷达与Wi-Fi模组的低功耗智能安防哨兵设计与实现

2026/8/20 8:19:05

1. 项目概述:当安防哨兵遇上AIoT 最近在捣鼓一个挺有意思的小项目,我把它叫做“Ai-WB2-12FRd-04 Sentry Check”。这个名字听起来有点技术范儿,其实核心想法很简单:我想做一个智能、低功耗且能主动“看”和“听”的安防哨兵。这个…

Linux系统未激活水印的成因分析与安全去除方案

Linux系统未激活水印的成因分析与安全去除方案

2026/8/20 8:19:05

如果你在 Linux 桌面环境中,看到屏幕角落显示着“未激活”、“试用版”或“评估副本”的水印,会不会觉得既碍眼又有点不专业?这个水印通常出现在某些需要付费许可的 Linux 发行版或桌面环境(如某些商业版的 KDE Plasma&#xff09…

深入解析AI Agent架构:从前端工程化视角拆解Claude Code源码

深入解析AI Agent架构:从前端工程化视角拆解Claude Code源码

2026/8/20 8:19:05

如果你是一名前端架构师,最近一定被各种“AI Agent”和“Claude Code”的消息刷屏了。但你可能也发现了,大多数文章要么停留在“AI很牛”的概念吹捧,要么就是教你如何安装一个桌面版工具,点到即止。真正能让你看清一个AI智能体内部…

技术面试中的常见误区与全栈工程师能力评估

技术面试中的常见误区与全栈工程师能力评估

2026/8/20 8:19:05

1. 一场啼笑皆非的技术面试实录 那天下午三点半,我正喝着第三杯美式咖啡对抗春困,HR突然敲门说临时安排了一场技术面。推开会议室门的瞬间,我就知道今天的故事不简单——候选人谢飞机(是的,他坚持要用这个花名&#xf…

我如何把关注创作者的整份内容存下来:douyin-downloader 命令行上手实录

我如何把关注创作者的整份内容存下来:douyin-downloader 命令行上手实录

2026/8/20 8:19:05

我如何把关注创作者的整份内容存下来:douyin-downloader 命令行上手实录 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and brows…

深度学习如何解决自动驾驶在雨雪天气的传感器噪声挑战

深度学习如何解决自动驾驶在雨雪天气的传感器噪声挑战

2026/8/20 8:09:05

1. 自动驾驶的“雪盲症”:一个被低估的致命挑战 自动驾驶汽车在晴朗天气下已经能展现出令人惊叹的稳定性,但一旦遇到雨雪天气,其表现往往会大打折扣,甚至直接“罢工”。这背后的核心原因,并非车辆的动力系统或控制算法…

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

2026/8/19 3:36:59

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

【双层规划,节点出清价,绿证交易,CVaR方法】两级电力市场环境下计及风险的省间交易商最优购电模型附Matlab代码

【双层规划,节点出清价,绿证交易,CVaR方法】两级电力市场环境下计及风险的省间交易商最优购电模型附Matlab代码

2026/8/19 9:17:18

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

隐式mpc+自适应mpc+时变mpc,线性时变模型预测控制附Simulink仿真

隐式mpc+自适应mpc+时变mpc,线性时变模型预测控制附Simulink仿真

2026/8/19 8:02:16

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

微信聊天记录如何完整导出?WeChatMsg备份指南:HTML/Word/CSV一键转换

微信聊天记录如何完整导出?WeChatMsg备份指南:HTML/Word/CSV一键转换

2026/8/20 0:08:45

微信聊天记录如何完整导出?WeChatMsg备份指南:HTML/Word/CSV一键转换 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com…

B站缓存m4s打不开?m4s-converter无损合成MP4,实测1.46GB仅5秒

B站缓存m4s打不开?m4s-converter无损合成MP4,实测1.46GB仅5秒

2026/8/20 0:08:45

B站缓存m4s打不开?m4s-converter无损合成MP4,实测1.46GB仅5秒 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 判断你是否…

告别白模时代:Blender3mfFormat 让 3MF 导入导出一次跑通设计到打印

告别白模时代:Blender3mfFormat 让 3MF 导入导出一次跑通设计到打印

2026/8/20 0:08:45

告别白模时代:Blender3mfFormat 让 3MF 导入导出一次跑通设计到打印 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat 按 3MF 官方规范的字面意思,一…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/17 12:00:53

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/15 10:10:27

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/18 12:20:24

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…