11

Scala で利用できるキャッシング ソリューションがあるかどうかは疑問です。JavaでGuavaが提供するようなものを探しています。

ScalaでもGuavaを使用する必要がありますか? Scalaz などにラッパー / ピンプはありますか? Scala開発者にとってより適切な代替手段はありますか?

グアバが提供するもの:

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 のような基本的なキャッシュ管理が必要です。

4

4 に答える 4

5

自分のプロジェクトをプラグインするための回答を追加するだけですが、ScalaCache をお勧めします。

  • Guava、Ehcache、Memcached、Redis をサポート (または、必要に応じて独自の実装をプラグインできます)
  • シンプルで慣用的な Scala API
  • 要素ごとの Time To Live のサポート (そのままでは提供しない Guava の場合でも)
  • マクロ マジックを使用したキャッシュ キーの自動生成のサポート

https://github.com/cb372/scalacache

于 2014-10-20T04:38:14.677 に答える
3

Scalaz などにラッパー / ピンプはありますか?

Scalaz 7 には がありMemo、これについてはScalaz の学習 16 日目に少し触れました。

これは Adam Rosien がscalaz の "For the Rest of Us"トークで最初に取り上げたものなので、こちらもチェックしてください。彼は Scalaz 6 を使用しています。

于 2012-12-05T07:04:15.803 に答える