我想使用 Guava 作为缓存,但我似乎找不到 Guava 具有允许我加载多个项目并获取多个项目的能力。
我看到 CacheLoader 有以下内容:
@Override
public Value load(String key) {
return getKey();
}
Run Code Online (Sandbox Code Playgroud)
我需要加载的是:
@Override
public List<Value> load(List<String> keys) {
return getKeys();
}
Run Code Online (Sandbox Code Playgroud)
我还希望从缓存中获取一个或一组项目,但即使我必须将一个项目包装到列表中才能获取它,我也很高兴。
我是 Guava 的新手,不确定 Guava 是否有这样的功能?
您可以使用CacheLoader.loadAll()来加载多个项目并LoadingCache.getAll()获取它们。
例如:
new CacheLoader<String, Value>() {
@Override
public Value load(String key) {
return getKey();
}
@Override
public Map<String, Value> load(Iterable<? extends String> keys) {
return getKeys();
}
}
//...
List<String> keys = Arrays.asList("key1", "key2", "key3");
ImmutableMap<String, Value> values = cache.getAll(keys);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7476 次 |
| 最近记录: |