緩存一般分爲cpu緩存、操作系統緩存、本地緩存、分佈式緩存、http緩存和數據庫緩存.而guava cache是全內存的本地緩存。
你的緩存數據不超過內存(Guava緩存是單個應用中的本地緩存。它不會將數據存儲到文件中,或者外部服務器。如果不適合你,可以考慮一下 Memcached)
localcache有着極大的性能優勢,單機情況下,適當使用localcache會使程序的效率得到
很大的提升.但在集羣環境下localcache就存在很多問題了,主要體現在多個jvm之間cache
的同步問題。
關於併發的問題 詳情見http://www.cnblogs.com/redcreen/archive/2011/02/15/1955248.html
- 創建方式
LoadingCache<String,User> u=CacheBuilder.newBuilder()// key,value都是可以指定
.maximumSize(1000) // key超過一定數量時,回收最近沒有使用或使用次數比較少的
.expireAfterWrite(10,TimeUnit.MINUTES) // 在指定的時間內沒有更新就回收
.expireAfterAccess(10,TimeUnit.MINUTES) // 沒有讀寫或寫就被回收
.weakKeys()/ weakValues()/softValues() //沒有引用到該緩存時就被垃圾回收
.removalListener(listener) //回收時的監聽器
.build(
new CacheLoader<String,User>(){
Public Userload(String key)throwsAnyException{
return createUser(key); //只有在沒有這個key時才調用
}
});
Cache<String,String> cache = CacheBuilder.newBuilder().maximumSize(1000).build();
String str = cache.get(“eg”, new Callable<String>(){ //這個回掉方法在找不到key調用
Public String call() { return “1”;}
});