我正在使用Guava Cache
在内存中缓存大约100K条记录。我使用cache.putAll(Map<K,V>)
预加载缓存。加载大约20K条记录后,我看到删除通知的原因是“REPLACED”。所有条目的最大大小为1GB,称重器返回1,expireAfterAccess为24小时。 1GB足够用于所有记录。我如何确保在24小时之前没有任何条目被替换?如何避免从Guava Cache中删除条目
MyCacheLoader cacheLoader = new MyCacheLoader();
CacheBuilder<Long, Map<String, List<String>>> cacheBuilder = CacheBuilder.newBuilder().
initialCapacity(1024 * 1024 * 1024).
//maximumSize(1024 * 1024 * 1024).
maximumWeight(1000000).
weigher(new Weigher<Long, Map<String, List<String>>>(){
public int weigh(Long arg0, Map<String, List<String>> arg1) {
return 1;
}
}).
concurrencyLevel(1).
expireAfterAccess(24, TimeUnit.HOURS);
cache = cacheBuilder.build(cacheLoader);
谢谢Andrey,刚刚改变重量为1,仍然看到相同的行为。 – user379151
嘿,我的回答说,问题是不是用秤,它可能是 –
好的,回去验证,被替换的是唯一的密钥,没有找到重复。 – user379151