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

本地缓存的三种实现

本地缓存

本地缓存的实现

常见的本地缓存三种实现

  • 使用Java或自定义数据结构构造JVM本地缓存,大多数场景下ConcurrentHashMap就可以支持的很好

  • 使用Guava LoadingCache构造本地缓存,支持配置加载(LRU最近最少使用算法)

  • 使用Caffeine Cache构造本地缓存,它是对LoadingCache的优化(TinyLfu ,近似的LFU算法)

  • Caffeine: Caffeine 使用的缓存淘汰算法比 Guava 的 LRU 更先进、更复杂和高效。它基于 Window TinyLfu

    • TinyLfu (Tiny Least Frequently Used): 这是一种近似的 LFU (Least Frequently Used,最不常用) 算法,它通过一个紧凑的数据结构(如 Count-Min Sketch)来估计条目的访问频率,即使条目被淘汰后,它的频率信息也能保留一段时间。这使得 TinyLfu 对扫描抵抗(scan resistance)有更好的表现,即短暂的大量访问不会轻易冲垮整个缓存。

    • Window: Caffeine 将缓存分为一个小的“窗口”区域和一个大的“主”区域。新加入的条目首先进入窗口,窗口通常使用 LRU 进行管理。

    • Admission Policy (录取策略): 当窗口中的条目要进入主区域,或者有新条目要替换主区域中的条目时,Caffeine 会使用 TinyLfu 估算的频率信息来决定是否“录取”这个条目进入主区域,以及淘汰主区域中的哪个条目。主区域通常也使用 LRU 或类 LRU 策略进行管理。

http://www.xdnf.cn/news/429787.html

相关文章:

  • 检索增强生成(RAG)简介
  • Codeforces Round 998 (Div. 3)
  • STM32F103_LL库+寄存器学习笔记22 - 基础定时器TIM实现1ms周期回调
  • 深入浅出:C++数据处理类与计算机网络的巧妙类比
  • Oracle OCP认证考试考点详解083系列15
  • CVE-2016-4977 漏洞深度分析
  • TensorFlow之微分求导
  • 力扣-101.对称二叉树
  • JIT+Opcache如何配置才能达到性能最优
  • Spring Boot 自动装配原理详解
  • openGauss与海量100数据库对比
  • vscode点击函数名/变量/文件名无法跳转
  • 项目图标组件处理
  • LabVIEW 程序运行时内存不足报错原因
  • STM32 __rt_entry
  • AD19基础应用技巧:Via 尺寸设置界面 (Size and Shape)
  • AI视频生成工具开发与搭建:从技术到应用的全方位指南
  • linux中fork()函数的小问题
  • solidwors插件库收集
  • 社区商业增值服务生态薄弱?停车反哺+商户联盟激活双向收益
  • 最大子段和(递推)
  • 2.4GHz无线通信芯片选型指南:集成SOC与低功耗方案解析
  • Python+1688 API 开发教程:实现商品实时数据采集的完整接入方案
  • 云蝠智能大模型呼叫接入通义千问qwen3模型!
  • 2025年RIS SCI2区,改进白鲸优化算法+复杂非线性方程组求解,深度解析+性能实测
  • 超标量处理器设计5-指令集体系
  • uniapp+vue3开发项目之引入vuex状态管理工具
  • 修改(替换)文件中的指定内容并保留文件修改前的时间(即修改前后文件的最后修改时间保持不变)
  • 我们该如何使用DeepSeek帮我们减负?
  • 深度Q网络(DQN)的基本概念