Javaキャッシュテクノロジー-google guava cache

2017 ワード

詳細
一、紹介
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()