我正在使用 CaffeineCachememoizeF
来缓存将案例类作为输入的操作的结果,如下所示:
case class Foo(id: UUID, bar: String)
implicit val myCache: CaffeineCache[Foo] =
buildCache(cacheConfig.size) //builds the CaffeineCache
def cachedOperation(foo: Foo): Future[Foo] =
memoizeF(cacheConfig.duration) {
// do something with foo and return it
}
现在,在某些情况下,我需要从缓存中显式删除特定元素。
我想我可以使用myCache.doRemove(key)
,但从我在 ScalaCache 文档中看到的内容来看,当使用memoizeF
密钥时,将“从类名、封闭方法的名称和所有方法参数的值”生成,而我没有从中进行反向工程key
并与之一起使用doRemove
是一个好主意。
是否有另一种方法可以从缓存中删除特定元素,如果它是使用 插入的memoizeF
?或者,也许我可以以某种方式告诉memoizeF
使用id
from Foo 作为键,而不是从类名等生成它(我确定id
s 对于每个 Foo 实例都是唯一的)?
对于这种情况,也许使用memoizeF
根本不是一个好主意,我应该回到“手动”插入缓存?任何输入表示赞赏。我查看了官方文档并四处搜索,但没有运气。