移除
术语:
- 剔除是指基于剔除策略的移除
- 无效只是被调用者手工移除
- 移除是剔除和无效的后续操作
明确移除
在任何时候,您都可以显式的使缓存条目无效,而不必等待条目被剔除。
// individual key
cache.invalidate(key)
// bulk keys
cache.invalidateAll(keys)
// all keys
cache.invalidateAll()
移除监听
Cache<Key, Graph> graphs = Caffeine.newBuilder()
.removalListener((Key key, Graph graph, RemovalCause cause) ->
System.out.printf("Key %s was removed (%s)%n", key, cause))
.build();
您可以通过Caffeine.removalListener(RemovalListener)
为缓存指定移除监听器,以便在条目移除时执行某些操作。RemovalListener会接收移除条目的key、value和RemovalCause。
移除监听器会通过Executor异步执行。默认的执行器是ForkJoinPool.commonPool(),您可以通过Caffeine.executor(Executor)重写执行器。当监听操作必须与移除操作同步执行时,使用CacheWriter代替。
请注意,移除监听器抛出的所有异常将写入日志(通过Logger)并且被吞掉。