在 Java 中,处理基于时间的缓存可能是一个挑战。密钥可能会在一定时间后过期,因此有必要自动清除这些过期条目。
解决此问题的一种方法是利用 Google Collections(现在称为 Guava)的强大功能。 Guava 的 MapMaker 类提供了一种使用过期键创建地图的便捷机制。
ConcurrentMap<Key, Graph> graphs = new MapMaker() .concurrencyLevel(4) .softKeys() .weakValues() .maximumSize(10000) .expiration(10, TimeUnit.MINUTES) .makeComputingMap( new Function<Key, Graph>() { public Graph apply(Key key) { return createExpensiveGraph(key); } });
使用 MapMaker,您可以指定各种参数:
Guava 已弃用其中一些 MapMaker 方法,转而使用 CacheBuilder:
LoadingCache<Key, Graph> graphs = CacheBuilder.newBuilder() .maximumSize(10000) .expireAfterWrite(10, TimeUnit.MINUTES) .build( new CacheLoader<Key, Graph>() { public Graph load(Key key) throws AnyException { return createExpensiveGraph(key); } });
CacheBuilder 提供了更简洁和更新的 API,用于管理 Java 中基于时间的缓存。
以上是如何使用 Guava 在 Java 中创建基于时间的过期缓存?的详细内容。更多信息请关注PHP中文网其他相关文章!