如何从org.apache.cayenne.util.concurrentlinkedhashmap中获得驱逐值?<



我使用org.apache.cayenne.util.concurrentlinkedhashmap并通过使用maximumWeightedCpacity(3000)方法设置缓存容量,一旦缓存达到其阈值限制,它就开始驱逐旧条目。我需要那些被淘汰的元素。如何使用侦听器获取这些条目?

这是ConcurrentLinkedHashMap库的嵌入副本。本教程提供了一个使用EvictionListener的示例,可以写成:

ConcurrentMap<K, V> cache = new ConcurrentLinkedHashMap.Builder<K, V>()
.maximumWeightedCapacity(3_000)
.listener((key, value) ->
System.out.printf("Evicted key=%s, value=%s%n", key, value))
.build();

虽然这个库很小,但它是在Java 5时间框架内编写的。它仍然是优秀的嵌入式情况下,尽量减少罐子的大小,但一般用途应该更喜欢咖啡因代替。该库提供了更丰富的特性集和额外的性能改进。

Cache<K, V> graphs = Caffeine.newBuilder()
.maximumSize(3_000)
.removalListener((K key, V value, RemovalCause cause) ->
System.out.printf("%s: key=%s, value=%s%n", cause, key, value))
.build();

相关内容

最新更新