Javaキャッシュテクノロジー-google guava cache
2017 ワード
詳細
一、紹介
guavaはehcacheと同様にローカルキャッシュであり,いずれもローカルキャッシュであるが,異なる使用シーンを持っている.guavaはグーグルが提供するJavaツールパッケージであり、GuavaのCache部分には、Guaveの前にConcurrentMapが友好的にサポートされているため、ローカルキャッシュとしてよく使われていますが、キャッシュの期限切れ、キャッシュデータのロード、リフレッシュなど、キャッシュのいくつかの特性を備えていません.
二、シーンの使用
1、本来の目的でローカルメモリスペースを消費して速度を上げる
2、更新ロック
更新ロックとは、キャッシュが無効になったときに、あるキーを大量にクエリーするように要求することです.このキーが存在しない場合、データベースからデータを複数回ロードすることになります.Guava cacheはcacheloaderのloadメソッドで制御することができ、同じキーに対して1つのデータベースを求めてデータを読み取り、他のリクエストは結果をブロックすることができます.
三、Guava cacheの作成方法
1、CacheLoader作成
3、キャッシュを積極的に削除する
キャッシュinvalidateを削除します(「key 01」)
すべてのキャッシュを削除 invalidateAll()
一、紹介
guavaはehcacheと同様にローカルキャッシュであり,いずれもローカルキャッシュであるが,異なる使用シーンを持っている.guavaはグーグルが提供するJavaツールパッケージであり、GuavaのCache部分には、Guaveの前にConcurrentMapが友好的にサポートされているため、ローカルキャッシュとしてよく使われていますが、キャッシュの期限切れ、キャッシュデータのロード、リフレッシュなど、キャッシュのいくつかの特性を備えていません.
二、シーンの使用
1、本来の目的でローカルメモリスペースを消費して速度を上げる
2、更新ロック
更新ロックとは、キャッシュが無効になったときに、あるキーを大量にクエリーするように要求することです.このキーが存在しない場合、データベースからデータを複数回ロードすることになります.Guava cacheはcacheloaderのloadメソッドで制御することができ、同じキーに対して1つのデータベースを求めてデータを読み取り、他のリクエストは結果をブロックすることができます.
三、Guava cacheの作成方法
1、CacheLoader作成
LoadingCache loadingCache = CacheBuilder.newBuilder()
/* 10*/
.initialCapacity(10)
/* 100*/
.maximumSize(100)
/* */
.recordStats()
/* 8, */
.concurrencyLevel(8)
/* 2 */
.expireAfterAccess(2, TimeUnit.SECONDS).build(new CacheLoader() {
@Override
public Object load(String key) throws Exception {
System.out.println(System.currentTimeMillis() + " 。。。");
return key + ": cache-value";
}
});
/** , get ExecutionException , getUnchecked */
System.out.println( loadingCache.getUnchecked("111") );
/** */
System.out.println( loadingCache.stats().toString() );
2、Callable方式で作成Cache cache = CacheBuilder.newBuilder().maximumSize(100).build();
String resultval = cache.get("key01", new Callable() {
public String call() throws Exception {
return "key01-value";
}
}) ;
System.out.println( resultval );
どちらも使用シーンが異なり、合理的に使用したい 3、キャッシュを積極的に削除する
キャッシュinvalidateを削除します(「key 01」)
すべてのキャッシュを削除 invalidateAll()