我在我的项目中使用 Guava 的 LoadingCache 来处理线程{安全、友好}的缓存加载,它工作得非常好。但是,有一个限制。
当前定义缓存的代码如下所示:
cache = CacheBuilder.newBuilder().maximumSize(100L).build(new CacheLoader<K, V>()
{
// load() method implemented here
}
我没有指定到期时间。
问题是根据键的值,一些关联的值可能会过期,而另一些可能不会。而 CacheLoader
没有考虑到这一点,如果你指定一个过期时间,它是针对每一个条目的。
你会如何解决这个问题?
最佳答案
另一种选择是我的ExpiringMap (我是作者),支持变量条目过期:
Map<String, String> map = ExpiringMap.builder().variableExpiration().build();
map.put("foo", "bar", ExpirationPolicy.ACCESSED, 5, TimeUnit.MINUTES);
map.put("baz", "pez", ExpirationPolicy.CREATED, 10, TimeUnit.MINUTES);
关于java - 设计具有可变条目到期时间的 Guava LoadingCache,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13979376/