这是背景:我的外部存储中有 10 亿用户,其中大多数用户每天至少会被访问一次,但只有一些活动数据会被访问得更多。
所以对于番石榴,我可以写:
cache.get(key, new Callable() {
Call() {
return getExternal(key);
}
});
但是,每次我从外部存储加载时,Guava 都会将对象缓存到内存中。但是由于我有一个非常大的数据集,并且非常不活跃的数据也会被加载到内存中然后超过最大大小,因此真正活跃的数据可能会被淘汰。
所以我希望控制 Guava,告诉它这个数据不打算被缓存,像这样:
cache.get(key, new Callable() {
Call() {
MyObject o = getExternal(key);
if (!o.isActive()) {
...//do NOT cache
}
}
});
是否有可能在 Guava 中实现这个目标?