ehcache如何判断缓存数据是否存在--isKeyInCache
Posted liuys635
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ehcache如何判断缓存数据是否存在--isKeyInCache相关的知识,希望对你有一定的参考价值。
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 notStatus.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:
- the idle time is non-zero and has elapsed, unless the cache is eternal; or
- the time to live is non-zero and has elapsed, unless the cache is eternal; or
- 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 notStatus.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;
}
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;
}
以上是关于ehcache如何判断缓存数据是否存在--isKeyInCache的主要内容,如果未能解决你的问题,请参考以下文章