【发布时间】:2012-11-29 23:09:41
【问题描述】:
我只是想知道 Scala 中是否有任何可用的缓存解决方案。 我正在寻找类似 Guava 在 Java 中提供的东西。
我应该在 Scala 中也使用 Guava 吗? Scalaz 中是否有包装器/皮条客或类似的东西? 还有更适合 Scala 开发人员的替代方案吗?
Guava 提供了什么:
LoadingCache<Key, Graph> CACHE= CacheBuilder.newBuilder()
.maximumSize(1000)
.expireAfterWrite(10, TimeUnit.MINUTES)
.removalListener(MY_LISTENER)
.build(
new CacheLoader<Key, Graph>() {
public Graph load(Key key) throws AnyException {
return createExpensiveGraph(key);
}
});
Supplier<Animal> singleAnimalCache = Suppliers.memoizeWithExpiration(animalFromDbSupplier(), 365, TimeUnit.DAYS);
我需要一些基本的缓存管理,比如 Guava。
【问题讨论】:
-
@om-nom-nom 这看起来很棒,我正在寻找一个 memoizer(就像在 Guava 和 Supplyer 中一样),但我需要一些缓存管理,比如过期、最大缓存大小等。我不需要在 Scalaz 实现中看不到这一点
-
你不会是第一个在 Scala 中使用 Guava 的
Cache的人。 -
Twitter 有一个 helper 用于 MapMaker(现已适应 CacheBuilder)。相反,我直接使用 CacheBuilder 并隐含在 Guava 和 Scala 类型之间进行转换。
-
这有帮助吗? Guava caching in scala