我想像这样创建一个缓存
Cache<String, File> cache = Caffeine.newBuilder()
.expireAfterWrite(1, TimeUnit.MINUTES)
.maximumSize(100)
.build();我将像这样填充一个临时文件,
File f = File.createTempFile("jobid_", ".json");
FileWriter fileWriter = new FileWriter(f);
fileWriter.write("text values 123");
fileWriter.close();
cache.put("jobid", f);现在1分钟后,我知道cache.getIfPresent("jobid")将返回null,我的问题是,有没有什么方法可以在这个条目过期时触发另一个任务-删除临时文件本身。
任何替代解决方案都可以。
发布于 2021-03-09 21:55:46
多亏了毛绒。
要实现相同的功能,只需使用removalListener即可。
对于我的用例:
Cache<String, File> cache = Caffeine.newBuilder()
.removalListener((String key, File file, RemovalCause cause) -> {
file.delete();
})
.expireAfterWrite(3, TimeUnit.SECONDS)
.maximumSize(100)
.build();解决了问题。
https://stackoverflow.com/questions/66545360
复制相似问题