我意识到对此有类似的问题/答案,但我似乎无法找到我正在寻找的东西。
我正在寻求实现一个内存缓存,它缓存对正在执行存在性检查的数据库的调用结果。这种存在性检查非常昂贵,一旦对象存在于数据库中,它就永远不会被删除,所以我只需要一个非常简单的内存缓存(甚至是进程内缓存)。一旦进行了数据库调用,进程就会记住该 ID 存在性检查的结果,并且不应再次调用数据库。
(也许要提到的另一件事是,如果数据库中不存在该对象,它将被创建)。
我正在为此使用 HashSet (java),并在检查/创建完成后将 ID 添加到集合中,但这是一个高度并发的环境,我不确定 HashSet 缺乏线程安全性的影响。
该代码仅使用 add() 和 contains() 方法(无迭代)。
我真的不关心这里和那里的缓存未命中(以及由此产生的额外数据库调用),但我想知道的是,在并发线程中调用 add() 和 contains() 的这种模式是否会导致到更灾难性的错误。
潇湘沐
繁花如伊
相关分类