ehcache如何判斷緩存數據是否存在--isKeyInCache


 

Posted on 2011-04-22 15:59  asdtiang 閱讀(5552)  評論(0)   編輯   收藏 
boolean isKeyInCache(java.lang.Object key)
An inexpensive check to see if the key exists in the cache.

 

Parameters:
key - the key to check for
Returns:
true if an Element matching the key is found in the cache. No assertions are made about the state of the Element.

這個方法是Ehcache的方法,它只判斷key是否存在,並不判斷這個緩存元素過期沒有,所以當元素加入緩存時key就一直存在,所以就算元素過期,只要key被緩存過一次,這個方法就返回true,
即緩存元素被移除的話,key還存在。


程序就不能用這個方法來判斷緩存中是否存在這個某個緩存元素。
 得用如下方法:

getQuiet

Element getQuiet(java.lang.Object key)
throws java.lang.IllegalStateException,
CacheException
Gets an element from the cache, without updating Element statistics. Cache statistics are also not updated.

 

 

Parameters:
key - a serializable value
Returns:
the element, or null, if it does not exist.
Throws:
java.lang.IllegalStateException - if the cache is not  Status.STATUS_ALIVE
CacheException
Since:
1.2
See Also:
isExpired(net.sf.ehcache.Element)

isExpired

boolean isExpired(Element element)
throws java.lang.IllegalStateException,
java.lang.NullPointerException
Checks whether this cache element has expired.

The element is expired if:

  1. the idle time is non-zero and has elapsed, unless the cache is eternal; or
  2. the time to live is non-zero and has elapsed, unless the cache is eternal; or
  3. the value of the element is null.

 

Parameters:
element - the element to check
Returns:
true if it has expired
Throws:
java.lang.IllegalStateException - if the cache is not  Status.STATUS_ALIVE
java.lang.NullPointerException - if the element is null


示例代碼:
Element element=cache.getQuiet(key);
        log.info("element:"+element);
        if(element!=null) {
            log.info("cache.isExpired(element):"+cache.isExpired(element));
            log.info("cacheName:" + cacheName + " key:" + key + " isExist:true");
            return true;
        }
        else{
            log.info("cacheName:" + cacheName + " key:" + key + " isExist:false");
            return false;
        }



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM