首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Guava进行缓存

使用Guava进行缓存
EN

Stack Overflow用户
提问于 2011-01-19 18:13:20
回答 3查看 9.8K关注 0票数 18

哪些Guava类适合线程安全缓存?我使用的是组合键,它是动态构造的,所以softKeys()没有任何意义,对吧?我在某个地方看到了ConcurentLinkedHashMap,这是你要走的路吗?它已经在最近的版本中了吗?很抱歉这么混乱的提问方式...

更新

这个问题很老了,翻看他的答案可能是浪费时间。很久以前就有了CacheBuilder,这就是我们要走的路。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-19 19:17:05

听起来您想要MapMaker.makeComputingMap,但是您提到了softKeys,所以我假设您已经熟悉那个类了。

您对softKeys的看法是正确的-如果您动态地组合键,它将无法工作,因为softKeys会导致映射使用==而不是equals进行键比较。但是,只要重新创建一个被驱逐的条目没有副作用,您应该可以使用softValuesexpiration

票数 5
EN

Stack Overflow用户

发布于 2011-11-09 18:10:16

10.0版的新Guava库引入了Cache接口,该接口专门为缓存而设计。

它附带了与MapMaker类似的CacheBuilderMapMaker的所有缓存方法都将在版本11中删除。

文档中的示例:

代码语言:javascript
复制
Cache<Key, Graph> graphs = CacheBuilder.newBuilder()
   .concurrencyLevel(4)
   .weakKeys()
   .maximumSize(10000)
   .expireAfterWrite(10, TimeUnit.MINUTES)
   .build(
       new CacheLoader<Key, Graph>() {
         public Graph load(Key key) throws AnyException {
           return createExpensiveGraph(key);
         }
       });
票数 20
EN

Stack Overflow用户

发布于 2011-01-20 15:12:13

MapMaker.maximumSize()ConcurrentLinkedHashMap的长期替代品。如果有社区共识,CLHM仍然是改进算法的试验台,用于以后的移植。不过,我预计v2.0将是将这些改进移植到MapMaker之后的最后一个版本。该项目将根据需要继续存在,因为它拥有良好的用户基础(例如Apache Cassandra)。我很高兴Guava把它包含进来了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4734018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档