java - 寻找具有可关闭项目使用跟踪的轻量级 Java 缓存
问题描述
我正在寻找一个 Java 库,它可以用作cache
使用跟踪,用于缓存创建成本高、需要在删除时关闭并且可以跨线程共享的键控对象。
我确定了以下要求:
缓存属性:
- 基于大小的驱逐(可配置的最大大小)
- 应首先考虑驱逐最近最少使用的物品
- 驱逐清理(关闭被移除项目的资源)
- 类似地图的访问(键值)
- 项目应该尽可能长时间地保存,因为它们的创建成本很高(所以弱引用像 in
guava
或caffeine
似乎不是一个选项)
使用跟踪属性:
- 项目可以标记为“使用中”
- “正在使用”的项目不会被驱逐,当缓存已满且当前无法删除任何内容时,新项目的检索可能会阻塞
- “Usage-Tracking-Properties”也可以替换为根据缓存要删除的项目的某些运行时属性避免驱逐的可能性
一般的:
- 轻量级库会更好
到目前为止我发现了什么:
ehcache
有可能配置一个EvictionAdvisor
听起来很有希望的方法,但不幸的是,它“只能在将映射写入缓存时调用”,因此“对于键值对来说应该是常量”。也许每次使用状态发生变化时覆盖映射是一个选项 - 但这听起来不是最佳选择......
解决方案
推荐阅读
- javascript - 如何在 Highcharts 中构建同一系列的两个 X 轴?
- java - 修复 Java 中的错误(仅更改一行)
- json - 使用云功能时,来自 Firestore 的时间戳会转换为地图
- json - 如何从使用 JSON 提取器提取的多个值中为每个请求使用一个值
- python - 解析 XML 文件时,有没有办法使用 lxml.etree 跳过第一个条目或在特定子项处开始迭代?
- python - 仅考虑小时计算时差
- reporting-services - 如何获取运行报表以在页脚中打印的用户的身份?
- jira - 有没有办法按组件分解 Jira 项目中的用户访问权限
- ssis - 将具有重复行的平面文件导入 SQL 服务器
- excel - 数据验证 Excel 自动填充列表