生活随笔
收集整理的這篇文章主要介紹了
Java缓存技术-google guava cache
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、簡介
guava和ehcache一樣也是本地緩存,雖然都是本地緩存,但是有著不同的使用場景。guava是谷歌提供的一個Java工具包,而Guava的Cache部分提供了一套分詞完善的本地存儲緩存機制,在Guave之前ConcurrentMap,因為能友好的支持并發而經常被用作本地緩存,但它畢竟不具備緩存的一些特性,比如緩存過期,緩存數據加載和刷新等。
?
二、使用場景
1、原意消耗一些本地內存空間提升速度
2、更新鎖定
? 什么是更新鎖呢,當某個緩存失效的時候,大量請求去查詢某一個key 當這個key不存在,就會導致多次從數據庫中加載數據,Guava cache 可以在cacheloader 的 load方法眾加以控制,對同一個key只讓一個請求去數據庫眾讀取數據,而其他請求阻塞等待結果。
?
三、Guava cache 的創建方式
1、CacheLoader創建
?
Java代碼??
LoadingCache<String,?Object>?loadingCache?=?CacheBuilder.newBuilder()?? ?????????????????? ????????????????.initialCapacity(10)?? ?????????????????? ????????????????.maximumSize(100)?? ?????????????????? ????????????????.recordStats()?? ?????????????????? ????????????????.concurrencyLevel(8)?? ?????????????????? ????????????????.expireAfterAccess(2,?TimeUnit.SECONDS).build(new?CacheLoader<String,?Object>()?{?? ????????????????????@Override?? ????????????????????public?Object?load(String?key)?throws?Exception?{?? ????????????????????????System.out.println(System.currentTimeMillis()?+?"?緩存失效。。。");?? ????????????????????????return?key?+?":?cache-value";?? ????????????????????}?? ????????????});?? ??? ?????????? ????????System.out.println(?loadingCache.getUnchecked("111")?);?? ?????????? ????????System.out.println(?loadingCache.stats().toString()?);?? ?2、使用Callable方式創建
?
Java代碼??
Cache<String,?String>?cache?=?CacheBuilder.newBuilder().maximumSize(100).build();?? ?????????? String?resultval?=?cache.get("key01",?new?Callable<String>()?{?? ???public?String?call()?throws?Exception?{?? ????return?"key01-value";?? ???}?? })?;?? System.out.println(?resultval?);?? ?兩種方式都有不同的使用場景,希望能合理使用?
3、主動刪除緩存
刪除某一個緩存 invalidate("key01")
刪除所有緩存?invalidateAll()
總結
以上是生活随笔為你收集整理的Java缓存技术-google guava cache的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。