0

我正在尝试手动从咖啡因缓存中删除一个条目。我有两次尝试,但我怀疑它们都存在一些问题:

这个似乎可能会受到竞争条件的影响。

cache.get(key);
cache.invalidate(key);

这似乎绕过了缓存本身的方法,所以我不确定是否会产生奇怪的副作用。

cache.asMap().remove(key);

有没有标准的方法来做到这一点或我在这里缺少的缓存方法?

4

1 回答 1

2

你应该cache.asMap().remove(key)像你怀疑的那样使用。另一个调用对此进行了委托,但不返回该值,因为这对于缓存来说不是惯用的。

Cache接口对人们通常应该如何使用缓存进行了固执己见,而asMap()视图则更加原始以允许高级操作。例如,您通常不会遍历缓存(例如,memcached 不允许这样做),但如果您需要,则 Map 提供该支持。所有调用都流入相同的支持结构,因此不会出现不一致。API 只是试图推动用户采用最佳实践,但努力不阻止开发人员安全、正确地完成工作。

于 2021-06-16T00:25:55.750 回答