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;
        }


posted @   技术研究与问题解决  阅读(1882)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
历史上的今天:
2019-03-29 解决Error response from daemon: Get https://registry-1.docker.io/v2/library/hello-world/manifests/
2019-03-29 Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Clien
2019-03-29 docker pull下载镜像报错Get https://registry-1.docker.io/v2/library/centos/manifests/latest:..... timeout
2019-03-29 Maven 插件之 docker-maven-plugin 的使用
点击右上角即可分享
微信分享提示