我正在开发一些本质上是异步的后端服务。也就是说,我们有多个异步运行的作业,结果被写入到某些记录中。
该记录基本上是一个包装HashMap
结果(键为job_id
)的类。
问题是,我不想计算或不知道要运行多少个作业(如果我知道的话,我可以cache.invalidate()
完成所有作业后才能使用密钥)
相反,我想采用以下方案:
expireAfterWrite
)upsert
)记录数据库load()
从数据库中获取记录(如果找不到,请创建一个新记录)问题: 我尝试使用Caffeine缓存,但问题是记录没有在应有的确切时间到期。然后,我阅读了SO answer的番石榴缓存,我猜想类似的机制也适用于咖啡因。
因此,问题在于,即使一条记录已经完成,它也可以在缓存中“等待”一段时间。有没有办法解决这个问题?也就是说,有没有一种方法可以“鼓励”缓存使过期的项目无效?
这使我质疑我的解决方案。您认为我的解决方案是一种好习惯吗?
P.S。如有必要,我愿意切换到其他缓存解决方案。
答案 0 :(得分:1)
您可以看一下后面写的Ehcache。当然可以进行更多设置,但效果很好