gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 05:33:39 24 4
gpt4 key购买 nike

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

该记录基本上是一个封装结果 HashMap 的类(键为 job_id)。

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

相反,我想要以下方案:

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

问题:我尝试使用咖啡因缓存,但问题是记录没有在预期的确切时间过期。然后我读了这个SO answer对于 Guava 的 Cache,我想类似的机制也适用于 Caffeine。

所以问题是记录可以在缓存中“等待”相当长一段时间,即使它已经完成了。有办法解决这个问题吗?也就是说,有没有办法“鼓励”缓存使过期项失效?

这让我质疑我的解决方案。您认为我的解决方案是一个好的做法吗?

附注如有必要,我愿意切换到其他缓存解决方案。

最佳答案

你可以看看带有write-behind的Ehcache。这肯定需要更多的设置工作,但效果很好

关于java - 使用缓存作为数据库前面的一层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57037947/

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