有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用缓存作为数据库前面的层

我正在开发一些本质上是异步的后端服务。也就是说,我们有多个异步运行的作业,并将结果写入某个记录

这个记录基本上是一个类,它包装了HashMap个结果(键是job_id

问题是,我不想预先计算或知道要运行多少个作业(如果我知道,我可以在所有作业都已完成时cache.invalidate()键)

相反,我希望有以下方案:

  1. 设置新记录的到期日(即expireAfterWrite
  2. 到期时,将记录写入数据库(实际上是upsert
  3. 如果发生缓存未命中,则调用load()从数据库中获取记录(如果未找到,则创建一个新记录)

问题: 我尝试使用咖啡因缓存,但问题是记录并没有在它们应该过期的确切时间过期。然后我读了这篇关于番石榴贮藏的文章,我想类似的机制也适用于咖啡因

因此,问题是记录可以在缓存中“等待”相当长的一段时间,即使它已经完成。有没有办法克服这个问题?也就是说,有没有办法“鼓励”缓存使过期的项目无效

这让我怀疑我的解决方案。你认为我的解决方案好吗?

另外,如有必要,我愿意切换到其他缓存解决方案


共 (1) 个答案

  1. # 1 楼答案

    您可以查看带有write-behind的Ehcache。这肯定是更多的安装工作,但它是相当好的工作