bigapple之cache緩存部分使用

一、開頭 java

有些數據須要去網絡上加載,但不能每次都加載,因此此次通常會緩存到本地。緩存到本地的介質有不少。能夠使文件,或者本地數據庫。咱們此次的是緩存到內存。 git


二、使用對象緩存,便可以緩存對象。 github

Cache<String, Object> cache = AnCacheUtils.getObjectMemoryCache();
cache.put("xuan", "你好,我被緩存了");

上面就是緩存了一個字符串。AnCacheUtils.getObjectMemoryCache()取到的是一個默認的緩存對象。最大限制默認20個。使用LRU緩存算法。 算法

取緩存就更簡單了。以下: 數據庫

Cache<String, Object> cache = AnCacheUtils.getObjectMemoryCache();
String cacheStr = (String)cache.get("xuan");
cacheStr取到的就是最初存放的那個串。固然,咱們還複寫了一個put方法,用來支持緩存過時。使用以下:

Cache<String, Object> cache = AnCacheUtils.getObjectMemoryCache();
Date currentTime = new Date();
cache.put("xuan", "你好", currentTime.getTime() + 2000);// 過時2S

...中間讓時間超過2S

String cacheStr = (String)cache.get("xuan");
如你所想,這裏的cacheStr取到的是null,由於緩存過時了,須要從新加載。


三、bitmap緩存使用。若是要緩存的是bitmap圖片,雖然也能用上面的對象緩存。可是最好用下面專門爲bitmap定製的緩存。 緩存

Cache<String, Object> cache = AnCacheUtils.getBitmapMemoryCache();
cache.put("anan", bitmap);

...

Bitmap cacheBitmap = cache.get("anan");
這默認bitmap緩存大小3M。想必你也想到了吧,爲何要把bitmap緩存和對象緩存分開。對象內存容量很差統計,因此用個來計算。而bitmap的特殊性,若是用個數來限制,很容易出現OOM。因此用他的佔用內存來作限制。


四、刷新緩存和關閉緩存 網絡

Cache<String, Object> cache = AnCacheUtils.getObjectMemoryCache();
cache.removeAll();

...想要關閉默認緩存能夠以下

AnCacheUtils.closeObjectCache();


bitmap緩存也相似用法。cache.removeAll()只會把緩存清空,不過緩存容器還在。而AnCacheUtils.closeObjectCache()會把整個緩存容器設置null。通常刷新緩存,使用 cache.removeAll()便可。


五、咱們還能夠自定義設置默認緩存限制。以對象緩存爲例子。 app

AnCacheUtils.configObjectCacheSize(30);
Cache<String, Object> cache = AnCacheUtils.getObjectMemoryCache();
要注意的是,一旦重新限制緩存限制。那麼以前的緩存都會清空。這種操做最好在程序初始化的時候設置,而後以後就保持不變了。


六、總結 spa

其實這個緩存用法仍是比較簡單的,能夠當作一個map,緩存的時候put一下,要用緩存的時候get一下,就能夠了。 code

源碼在github上有:https://github.com/bigapple520520/bigapple

相關文章
相關標籤/搜索