Java ehcache磁盘存储

2023-12-10

我正在开发需要生成并经常访问数千个文件的应用程序。出于磁盘空间使用原因,我只想在任何给定时间保留固定数量的这些文件。例如,文件被写入 C:\my-folder。一旦 my-folder 达到 1000 个文件,如果我需要保存新文件,我想从 my-folder 中删除 LRU 文件。使用 ehcache (或任何缓存工具)可以实现类似的功能吗?我以为我可以在 ehcache 中使用磁盘存储,但是每当我调用get在缓存上,它只查看内存中的键,而不是磁盘中的键。

我的代码的一些片段如下所示:

    // create the cache
    CacheManager cm = CacheManager.create();
    String name = getName();
    CacheConfiguration config = new CacheConfiguration(name, 1)
            .maxElementsOnDisk(2000).diskPersistent(true)
            .overflowToDisk(true).eternal(true).diskStorePath(name)
            .memoryStoreEvictionPolicy(MemoryStoreEvictionPolicy.LRU);
    Cache cache = new Cache(config);
    cm.addCache(cache);

    // I do a couple of puts
    cache.put(new Element("key1", val1));
    cache.put(new Element("key2", val2));    
    cache.flush();

    // now key1 is no longer in the cache (since max memory size is 1), but I'd like to look on disk since I have set maxElementsOnDisk to 2000
    Element el = cache.get("key1");

Thanks,

Jeff


这看起来不像您正在使用 EH 缓存来发挥其潜力......在磁盘上存储 1000 个项目,然后轮换掉最后使用的一个。 EH Cache 更多的是用于在内存中存储内容,并在内存填满时使用磁盘作为备份。

我个人会自己推出。您有非常具体的业务规则。存储 1000 件物品。然后当你准备好存储文件1001时,你可以去找一个文件来删除。如果您在操作系统级别打开了访问时间,则可以执行单个 linux 命令来删除最近最少访问的文件...通常您不会在 linux 中对文件使用访问时间,但这会使您的问题很容易解决在操作系统级别解决..

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java ehcache磁盘存储 的相关文章

  • JPA 中的复合键

    我想创建一个具有自动生成的主键的实体 而且还有一个由其他两个字段组成的唯一复合键 我如何在 JPA 中执行此操作 我想这样做是因为主键应该用作另一个表中的外键 并且使其复合并不好 在下面的代码片段中 我需要命令和模型是唯一的 pk当然是主键
  • Java Runtime.getRuntime().freeMemory() 问题

    我搜索并看到了一些线程 但没有一个能够解决我遇到的具体问题 我正在尝试使用以下方式监视我的内存使用情况Runtime getRuntime freeMemory Runtime getRuntime maxMemory and Runtim
  • @RestController 没有 @ResponseBody 方法工作不正确

    我有以下控制器 RestController RequestMapping value base url public class MyController RequestMapping value child url method Req
  • Java:无法从同一包中的不同类访问静态变量

    这很奇怪 因为我有一个可以访问 Frame dimension getWidth 的 Character 类 及其伙伴 getHeight 但是当我想在 Map 类中使用它时 Eclipse 强调了它并且无法给我反馈 运行该程序最终会出现
  • 如何在 Firebase 远程配置中从 JSON 获取值

    我是 Android 应用开发和 Firebase 的新手 我想知道如何获取存储在 Firebase 远程配置中的 JSONArray 文件中的值 String 和 Int 我使用 Firebase Remote Config 的最终目标是
  • 使用 Ant 将非代码资源添加到 jar 文件

    我正在将 java 应用程序打包成 jar 文件 我正在使用 ant 和 eclipse 我实际上需要在 jar 中直接在根文件夹下包含几个单独的非代码文件 xml 和 txt 文件 而不是与代码位于同一位置 我正在尝试使用includes
  • 通往楼梯顶部的可能路径

    这是一个非常经典的问题 我听说谷歌在他们的面试中使用过这个问题 问题 制定一个递归方法 打印从楼梯底部到楼梯顶部的所有可能的独特路径 有 n 个楼梯 您一次只能走 1 步或 2 步 示例输出 如果它是一个有 3 级楼梯的楼梯 1 1 1 2
  • 来自十六进制代码的 Apache POI XSSFColor

    我想将单元格的前景色设置为十六进制代码中的给定颜色 例如 当我尝试将其设置为红色时 style setFillForegroundColor new XSSFColor Color decode FF0000 getIndexed 无论我在
  • Jackson XML ArrayList 输出具有两个包装器元素

    我在 Jackson 生成的 XML 输出中得到了两个包装器元素 我只想拥有一个 我有一个 Java bean Entity Table name CITIES JacksonXmlRootElement localName City pu
  • 如何检测 Java 字符串中的 unicode 字符?

    假设我有一个包含 的字符串 我如何找到所有这些 un icode 字符 我应该测试他们的代码吗 我该怎么做呢 例如 给定字符串 A X 我想将其转换为 AYXY 我想对其他 unicode 字符做同样的事情 并且我不想将它们存储在某种翻译映
  • 如何避免 ArrayIndexOutOfBoundsException 或 IndexOutOfBoundsException? [复制]

    这个问题在这里已经有答案了 如果你的问题是我得到了java lang ArrayIndexOutOfBoundsException在我的代码中 我不明白为什么会发生这种情况 这意味着什么以及如何避免它 这应该是最全面的典范 https me
  • Java:如何为山区时间创建 TimeZone 对象?

    必须不禁用夏令时 嗯 在这个清单 http en wikipedia org wiki List of tz database time zones在 zoneinfo 时区名称中 有很多声称是 山地时间 找到最适合您想要的那个 然后使用它
  • java库维护数据库结构

    我的应用程序一直在开发 所以偶尔 当版本升级时 需要创建 更改 删除一些表 修改一些数据等 通常需要执行一些sql代码 是否有一个 Java 库可用于使我的数据库结构保持最新 通过分析类似 db structure version 信息并执
  • 返回 Java 8 中的通用函数接口

    我想写一种函数工厂 它应该是一个函数 以不同的策略作为参数调用一次 它应该返回一个函数 该函数根据参数选择其中一种策略 该参数将由谓词实现 嗯 最好看看condition3为了更好的理解 问题是 它没有编译 我认为因为编译器无法弄清楚函数式
  • 是否可以使用 Java Guava 将函数应用于集合?

    我想使用 Guava 将函数应用于集合 地图等 基本上 我需要调整 a 的行和列的大小Table分别使所有行和列的大小相同 执行如下操作 Table
  • “无法实例化活动”错误

    我的一个 Android 应用程序拥有大约 100 000 个用户 每周大约 10 次 我会通过 Google 的市场工具向我报告以下异常情况 java lang RuntimeException Unable to instantiate
  • 在 Google App-Engine JAVA 中将文本转换为字符串,反之亦然

    如何从字符串转换为文本 java lang String to com google appengine api datastore Text 反之亦然 Check Javadoc http code google com appengin
  • Resteasy 可以查看 JAX-RS 方法的参数类型吗?

    我们使用 Resteasy 3 0 9 作为 JAX RS Web 服务 最近切换到 3 0 19 我们开始看到很多RESTEASY002142 Multiple resource methods match request警告 例如 我们
  • 如何重新启动死线程? [复制]

    这个问题在这里已经有答案了 有哪些不同的可能性可以带来死线程回到可运行状态 如果您查看线程生命周期图像 就会发现一旦线程终止 您就无法返回到新位置 So 没有办法将死线程恢复到可运行状态 相反 您应该创建一个新的 Thread 实例
  • 在java中使用多个bufferedImage

    我正在 java 小程序中制作游戏 并且正在尝试优化我的代码以减少闪烁 我已经实现了双缓冲 因此我尝试使用另一个 BufferedImage 来存储不改变的游戏背景元素的图片 这是我的代码的相关部分 public class QuizApp

随机推荐

  • 如何使用 Visual Studio Code 引用程序集?

    我想在我在 OSX 上使用 Visual Studio Code 编写的控制台应用程序中引用 System Drawing dll 即我想使用这些 using 语句 using System Drawing using System Dra
  • 视频缩略图阵列采用者滚动速度缓慢

    我创建了一个采用者来显示特定文件夹中视频的图像缩略图 但当我滚动时 它有点滞后 但这是为什么呢 下面是代码 主要活动类别 public class TestvideolistingActivity extends ListActivity
  • Gulp – 如何在终端中打开新选项卡?

    我对 OSX 的终端知之甚少 但我想通过 gulp 自动打开终端中的选项卡 然后使用 gulp shell 之类的东西在其中运行 gulp 命令 例如 我想要一个 gulp 任务在终端选项卡上启动 mongoDB 并在另一个选项卡中启动我的
  • 将毫秒 UTC 转换为人类可读的 Date_Time

    我正在努力弄清楚如何使用 boost date time 执行转换 我想将从 Unix 纪元 1970 年 1 月 1 日 00 00 测量的毫秒值转换为人类可读的字符串 类似于 2 13 2012 15 20 11将是理想的 我已经尝试过
  • Powershell:Register-ObjectEvent 可以监视剪贴板事件吗?

    在 Windows 10 和 11 上 我已成功使用 Register ObjectEvent 来监视文件系统事件 它也可以用来监视剪贴板事件吗 也就是说 Register ObjectEvent是如何用来hook Clipboard Co
  • 使用 Gulp.js 和通配模式就地修改文件(相同目标)

    我有一个 gulp 任务 尝试将 scss 文件转换为 css 文件 使用 gulp ruby sass 然后将生成的 css 文件放入与原始文件相同的位置 问题是 由于我使用的是通配模式 因此我不一定知道原始文件的存储位置 在下面的代码中
  • 对 dataGridView 列逐行进行数学运算,然后在文本框中显示最终值

    我一直在思考进行 datagridview 数学运算的最佳方法是什么 我有这个 datagridview 我需要逐行将列 castka 与 po et 相乘 然后 下一行 然后 下一行 直到最后 然后在文本框中显示最终值 因为我是初学者c
  • 库 itertools 与 python 代码的性能比较

    作为我问题的答案查找两个列表相同的从 1 开始的位置我得到了使用 C 库 itertools 来加快速度的提示 为了验证我使用 cProfile 编写了以下测试 from itertools import takewhile izip de
  • 如果顶点属性是指针,如何使用 boost::graph dijkstra 算法?

    我使用 boost graph 来管理图表 我需要制作一个 maxmin 树 现在我尝试使用 boost dijkstra 算法 但我使用指向我的类的指针作为顶点属性 而不是使用typedef property
  • 语言是否需要 preIncrement (++x) 和 postIncrement (x++)

    我从未见过其用例预增量 and 后增量在实际代码中 我最常看到它们的唯一地方是拼图 我的观点是 它带来了更多的混乱而不是有用 有没有任何实际的用例场景 这不能通过使用 来完成吗 y x y x x 1 It s just a shorter
  • 如何在 TypeScript 中生成“*.d.ts”?

    如何在打字稿中生成 d ts 或创建并导入 types 有没有办法为 jquery 插件或纯 JavaScript 库创建 d ts File d ts是一个声明文件 查看详情see 创造 d ts from a ts文件 您只需要添加 d
  • GCM 发件人 ID/项目编号

    要发送 GCM 我们有来自 Google API 控制台的 SENDER ID 保护该 SENDER ID 重要吗 我的意思是 如果有人知道这个ID 他就能做坏事吗 我犯了一个错误 我认为该 ID 在我的一个项目中 我可以以某种方式更改它吗
  • 捕获程序 stdout 和 stderr 以分隔变量

    是否可以在一次运行中将 stdout 从外部程序重定向到变量并将 stderr 从外部程序重定向到另一个变量 例如 global ERRORS global PROGERR function test Can we redirect err
  • 如何在 C# 中将 32 位颜色质量的位图图像转换为 16 位颜色质量

    我们有两个图像 第一个图像是在 WindowsXP 中捕获的 32 位颜色质量和在 WindowsXP 中捕获的 16 位颜色质量相同 两个图像都保存为位图图像 但是在比较两者时 我们观察到哈希值不同 这里我们计划实现 C 代码将 32 位
  • Java 1.4同步:只允许一个方法实例运行(非阻塞)?

    我有一堂课建议翻译实用程序 翻译本身应每 30 分钟重新加载一次 我为此使用 Spring Timer 支持 基本上 我的课程如下所示 public interface Translator public void loadTranslat
  • 如何在 matplotlib 中以 3D 形式绘制 3 个轮廓

    我有 3 个轮廓 由以下内容生成 import numpy as np import matplotlib pyplot as plt from mpl toolkits mplot3d import Axes3D from scipy i
  • 仅发生在一部手机上的 iPhone 崩溃

    我在一部手机上发现了一次特定的崩溃 但无法在其他手机上重现 我复制了下面的符号化崩溃文件 还有其他人见过这样的事情吗 有人能解释一下吗 Incident Identifier D679377A 67D8 4601 91D4 FEDFD4C1
  • 异步函数内的 Promise.all 错误:未定义不是函数

    在我使用的异步函数中Promise all但由于某种原因它没有定义或者这里是函数 async function check available money global browser await puppeteer launch head
  • Qt Creator 在“make”步骤编译错误

    我刚刚开始使用 Qt Creator 来创建 C GUI 程序 我刚刚下载并安装了它 但是编译过程给我带来了错误 当我尝试编译我的项目时 非常简单 只是屏幕上的 QLabel 这是我的第一个项目 它出现了错误 qtcreator ctrlc
  • Java ehcache磁盘存储

    我正在开发需要生成并经常访问数千个文件的应用程序 出于磁盘空间使用原因 我只想在任何给定时间保留固定数量的这些文件 例如 文件被写入 C my folder 一旦 my folder 达到 1000 个文件 如果我需要保存新文件 我想从 m