预取java缓存中的所有条目
我正在尝试使用构建一个缓存,我需要在启动时获取所有条目,但我并不知道所有的密钥。我的CachLoader有这样的功能,并试图在启动时缓存所有内容。但如果我想将所有条目预取到缓存中,我需要事先知道所有的密钥?我遗漏了什么吗 因此,假设我调用cache.getAll(10),即使loadAll方法返回3个条目(10-->100、20-->400、30-->900),也只缓存10-->100预取java缓存中的所有条目,java,caching,caffeine,Java,Caching,Caffeine,我正在尝试使用构建一个缓存,我需要在启动时获取所有条目,但我并不知道所有的密钥。我的CachLoader有这样的功能,并试图在启动时缓存所有内容。但如果我想将所有条目预取到缓存中,我需要事先知道所有的密钥?我遗漏了什么吗 因此,假设我调用cache.getAll(10),即使loadAll方法返回3个条目(10-->100、20-->400、30-->900),也只缓存10-->100 @覆盖 public Map loadAll(IterableWhat is your specific qu
@覆盖
public Map loadAll(IterableWhat is your specific question?我的问题是,我是否需要事先知道所有可能的键,以便可以预取所有可能的条目?loadAll
将返回比请求的键更大的映射,并将缓存所有键(但仅返回请求的条目)。如果你想加载所有内容,那么你可能没有键值缓存和Guava的供应商。请记住,Exption
可能更适合。非常感谢你的回复Ben。看起来我不需要知道所有可能的键。我可以传入一个假键,然后将它们全部加载到loadAll()中您的具体问题是什么?我的问题是,我是否需要事先知道所有可能的密钥,以便可以预取所有可能的条目?loadAll
将返回比请求的密钥更大的映射,并且所有密钥都将被缓存(但仅返回请求的条目)。如果你想加载所有内容,那么你可能没有键值缓存和Guava的供应商。请记住,Exption
可能更适合。非常感谢你的回复Ben。看起来我不需要知道所有可能的键。我可以传入一个假键,然后将它们全部加载到loadAll()中
@Override
public Map<Integer, Integer> loadAll(Iterable<? extends Integer> keys)
{
// gets called for the keys which are not present in the cache only by getAll
// we will load all keys irrespective of what is passed in
System.out.println("in loadAll");
// problem here is it is only caching the supplied keys
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
map.put(10, 100);
map.put(20, 400);
map.put(30, 900);
return map;
}