gpt4 book ai didi

Java ehcache 磁盘存储

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:40:21 24 4
gpt4 key购买 nike

我正在开发需要生成并经常访问数千个文件的应用程序。出于磁盘空间使用原因,我只想在任何给定时间保留固定数量的这些文件。例如,文件被写入 C:\my-folder。一旦我的文件夹达到 1000 个文件,如果我需要保存一个新文件,我想从我的文件夹中删除 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");

谢谢,

杰夫

最佳答案

这看起来不像是在使用 EH 缓存来发挥它的潜力.. 在磁盘上存储 1000 个项目,然后旋转掉最后使用的一个。 EH Cache更多的是在内存中存储东西,当内存满了的时候使用磁盘作为备份。

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

关于Java ehcache 磁盘存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3732582/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com