EHCache 是一个纯java的,在Hibernate2.1充当可插入的的在进程中的缓存,它具有以下缓存,最小的依赖性,全面的文特性:快速,简单,丰富的文档和测试用例。
官方网站 http://ehcache.sourceforge.net/
--------------------------
----------使用简介------------
--------------------------
ehcache-1.2 cacheNames 列表的取得;
方法一:
CacheManager.create();
String[] cacheNames = CacheManager.getInstance().getCacheNames();
方法二:
CacheManager manager = new CacheManager();
String[] cacheNames = manager.getCacheNames();
方法三:
CacheManager manager1 = new CacheManager("src/config/ehcache1.xml");
CacheManager manager2 = new CacheManager("src/config/ehcache2.xml");
String[] cacheNamesForManager1 = manager1.getCacheNames();
String[] cacheNamesForManager2 = manager2.getCacheNames();
ehcache-1.2 管理器各种建立的方法:
方法一:
CacheManager manager = new CacheManager();
方法二:
CacheManager manager = new CacheManager("src/config/ehcache.xml");
方法三:
URL url = getClass().getResource("/anotherconfigurationname.xml");
CacheManager manager = new CacheManager(url);
方法四:
InputStream fis = new FileInputStream(new File("src/config/ehcache.xml").getAbsolutePath());
try {
CacheManager manager = new CacheManager(fis);
} finally {
fis.close();
}
添加和删除缓存元素
设置一个名为test 的新cache,test属性为默认
CacheManager singletonManager = CacheManager.create();
singletonManager.addCache("testCache");
Cache test = singletonManager.getCache("testCache");
设置一个名为test 的新cache,并定义其属性
CacheManager singletonManager = CacheManager.create();
Cache memoryOnlyCache = new Cache("testCache", 5000, false, false, 5, 2);
manager.addCache(memoryOnlyCache);
Cache test = singletonManager.getCache("testCache");
Cache 属性说明:
构造函数:
public Cache(java.lang.String name,
int maxElementsInMemory,
boolean overflowToDisk,
boolean eternal,
long timeToLiveSeconds,
long timeToIdleSeconds)
参数说明:
name - 元素名字。
maxElementsInMemory - 设定内存中创建对象的最大值。
overflowToDisk - 设置当内存中缓存达到 maxInMemory 限制时元素是否可写到磁盘
上。
eternal - 设置元素(译注:内存中对象)是否永久驻留。如果是,将忽略超
时限制且元素永不消亡。
timeToIdleSeconds - 设置某个元素消亡前的停顿时间。
也就是在一个元素消亡之前,两次访问时间的最大时间间隔值。
这只能在元素不是永久驻留时有效(译注:如果对象永恒不灭,则
设置该属性也无用)。
如果该值是 0 就意味着元素可以停顿无穷长的时间。
timeToLiveSeconds - 为元素设置消亡前的生存时间。
也就是一个元素从构建到消亡的最大时间间隔值。
这只能在元素不是永久驻留时有效。
删除缓存元素:
CacheManager singletonManager = CacheManager.create();
singletonManager.removeCache("test");
关闭缓存管理器 CacheManager
CacheManager.getInstance().shutdown();
对于缓存对象的操作:
放入一个简单的对象到缓存元素;
Cache cache = manager.getCache("sampleCache1");
Element element = new Element("key1", "value1");
cache.put(element);
得到一个序列化后的对象属性值;
Cache cache = manager.getCache("sampleCache1");
Element element = cache.get("key1");
Serializable value = element.getValue();
得到一个没有序列化后的对象属性值;
Cache cache = manager.getCache("sampleCache1");
Element element = cache.get("key1");
Object value = element.getObjectValue();
删除一个对象从元素;
Cache cache = manager.getCache("sampleCache1");
Element element = new Element("key1", "value1"
cache.remove("key1");
对于永固性磁盘存储,立即存储到磁盘:
Cache cache = manager.getCache("sampleCache1");
cache.flush();
获得缓存大小:
得到缓存的对象数量;
Cache cache = manager.getCache("sampleCache1");
int elementsInMemory = cache.getSize();
得到缓存对象占用内存的数量
Cache cache = manager.getCache("sampleCache1");
long elementsInMemory = cache.getMemoryStoreSize();
得到缓存对对象占用磁盘的数量
Cache cache = manager.getCache("sampleCache1");
long elementsInMemory = cache.getDiskStoreSize();
关于缓存的读取和丢失的记录
得到缓存读取的命中次数;
Cache cache = manager.getCache("sampleCache1");
int hits = cache.getHitCount();
得到内存中缓存读取的命中次数;
Cache cache = manager.getCache("sampleCache1");
int hits = cache.getMemoryStoreHitCount();
得到磁盘中缓存读取的命中次数;
Cache cache = manager.getCache("sampleCache1");
int hits = cache.getDiskStoreCount();
得到缓存读取的丢失次数;
Cache cache = manager.getCache("sampleCache1");
int hits = cache.getMissCountNotFound();
得到缓存读取的已经被销毁的对象丢失次数;
Cache cache = manager.getCache("sampleCache1");
int hits = cache.getMissCountExpired();
--------------------------
----------简单例子------------
--------------------------
实战:
XML文件格式:
<ehcache>
<diskStore path="java.io.tmpdir"/>
<defaultCache
maxElementsInMemory="10000"
eternal="false"
timeToIdleSeconds="120"
timeToLiveSeconds="120"
overflowToDisk="true"
diskPersistent="false"
diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="LRU"
/>
<cache name="cache1"
maxElementsInMemory="10000"
eternal="false"
overflowToDisk="true"
timeToIdleSeconds="2"
timeToLiveSeconds="3"
memoryStoreEvictionPolicy="LFU"
/>
</ehcache>
源码:
import java.io.Serializable;
import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;
/**
#############################################################################
# DESCRIBE ehcache 缓存操作DEMO
# AUTHOR 悠~游
# DATE 2006-7-10
# COMPANY FLX
# PORJECT ehcache-demo
#############################################################################
*/
public class Demo {
static CacheManager manager= new CacheManager();
/**
*##############################################################################
*
* @DESCRIBE
* @param args
* @throws InterruptedException
*
*##############################################################################
*/
public static void main(String[] args) throws InterruptedException {
String[] cacheNames = manager.getCacheNames();
System.out.println("读取的缓存列表为:");
for(int i=0;i<cacheNames.length;i++){
System.out.println("-- "+(i+1)+" "+cacheNames[i]);
}
Cache cache = manager.getCache("cache1");
Element element = new Element("key1", "value1");
cache.put(element);
element = cache.get("key1");
Serializable value = element.getValue();
System.out.println("序列化后的值为:"+value.toString());
element = cache.get("key1");
Object value1 = element.getObjectValue();
System.out.println("未序列化的值为:"+value1.toString());
int elementsInMemory = cache.getSize();
System.out.println("得到缓存的对象数量:"+elementsInMemory);
long elementsInMemory1 = cache.getMemoryStoreSize();
System.out.println("得到缓存对象占用内存的数量:"+elementsInMemory1);
long elementsInMemory2 = cache.getDiskStoreSize();
System.out.println("得到缓存对对象占用磁盘的数量:"+elementsInMemory2);
int hits = cache.getHitCount();
System.out.println("得到缓存读取的命中次数:"+hits);
int hits1 = cache.getMemoryStoreHitCount();
System.out.println("得到内存中缓存读取的命中次数:"+hits1);
int hits2 =cache.getDiskStoreHitCount();
System.out.println("得到磁盘中缓存读取的命中次数:"+hits2);
int hits3 = cache.getMissCountNotFound();
System.out.println("得到缓存读取的丢失次数:"+hits3);
int hits4 = cache.getMissCountExpired();
System.out.println("得到缓存读取的已经被销毁的对象丢失次数:"+hits4);
}
}
分享到:
相关推荐
**开源缓存包 EHCache 全接触** EHCache 是一个广泛使用的开源 Java 缓存解决方案,它被设计用于提高应用程序的性能和响应速度,通过存储数据到内存中,避免了频繁的数据库访问。EHCache 适用于多种场景,包括 Web ...
1.解压缩到目录下,复制ehcache-monitor-kit-1.0.0\lib\ehcache-probe-1.0.0.jar包到application的web-inf/lib目录下 2.将以下配置copy的ehcache.xml文件的ehcache标签中,注:上述链接中说的配置少写了个probe包名...
ehcache缓存jar(ehcache-core-2.4.6.jar+ehcache-web-2.0.4.jar)
赠送jar包:ehcache-core-2.6.11.jar; 赠送原API文档:ehcache-core-2.6.11-javadoc.jar; 赠送源代码:ehcache-core-2.6.11-sources.jar; 赠送Maven依赖信息文件:ehcache-core-2.6.11.pom; 包含翻译后的API文档...
ehcache-core-2.6.10.jar依赖包 MyBatiesEhCache二级缓存 Ehcache是一种广泛使用的开源Java分布式缓存。主要面向通用缓存,Java EE和轻量级容器。它具有内存和磁盘存储,缓存加载器,缓存扩展,缓存异常处理程序,一个...
赠送jar包:ehcache-3.9.9.jar; 赠送原API文档:ehcache-3.9.9-javadoc.jar; 赠送源代码:ehcache-3.9.9-sources.jar; 赠送Maven依赖信息文件:ehcache-3.9.9.pom; 包含翻译后的API文档:ehcache-3.9.9-javadoc-...
赠送jar包:ehcache-web-2.0.4.jar; 赠送原API文档:ehcache-web-2.0.4-javadoc.jar; 赠送源代码:ehcache-web-2.0.4-sources.jar; 赠送Maven依赖信息文件:ehcache-web-2.0.4.pom; 包含翻译后的API文档:...
赠送jar包:shiro-ehcache-1.4.0.jar; 赠送原API文档:shiro-ehcache-1.4.0-javadoc.jar; 赠送源代码:shiro-ehcache-1.4.0-sources.jar; 赠送Maven依赖信息文件:shiro-ehcache-1.4.0.pom; 包含翻译后的API文档...
赠送jar包:ehcache-3.3.1.jar; 赠送原API文档:ehcache-3.3.1-javadoc.jar; 赠送源代码:ehcache-3.3.1-sources.jar; 赠送Maven依赖信息文件:ehcache-3.3.1.pom; 包含翻译后的API文档:ehcache-3.3.1-javadoc-...
赠送jar包:ehcache-core-2.6.11.jar; 赠送原API文档:ehcache-core-2.6.11-javadoc.jar; 赠送源代码:ehcache-core-2.6.11-sources.jar; 赠送Maven依赖信息文件:ehcache-core-2.6.11.pom; 包含翻译后的API文档...
在"ehcache-clustered-3.8.1-kit.zip"压缩包中,包含了Ehcache 3 集群版的完整部署包,用户可以快速搭建和测试集群环境。为了充分利用这些功能,开发者需要熟悉Ehcache的API和配置,以及如何在应用中集成和调用缓存...
8. **Web会话缓存**: Ehcache-web插件通过拦截Servlet请求,实现会话的缓存。配置完成后,Web应用的会话状态会被自动缓存,降低服务器资源消耗。 9. **缓存更新策略**: Ehcache支持缓存穿透(缓存不存在的请求)、...
4. 文件"ehcache-core-2.6.2"分析: 这个压缩包很可能是EhCache 2.6.2版本的核心库,包含了EhCache运行所需的所有类和资源。开发者通常会将这个库导入项目中,以便在应用程序中使用EhCache的功能。压缩包可能包含...
赠送jar包:ehcache-3.3.1.jar; 赠送原API文档:ehcache-3.3.1-javadoc.jar; 赠送源代码:ehcache-3.3.1-sources.jar; 赠送Maven依赖信息文件:ehcache-3.3.1.pom; 包含翻译后的API文档:ehcache-3.3.1-javadoc-...
标签"ehcache"是这个话题的核心,它是一种广泛使用的开源缓存框架,主要用于Java应用程序。EHCache支持多种缓存策略,包括LRU(Least Recently Used)和LFU(Least Frequently Used)等,同时具备分布式缓存能力,...
JavaEE源代码 ehcache-1.1JavaEE源代码 ehcache-1.1JavaEE源代码 ehcache-1.1JavaEE源代码 ehcache-1.1JavaEE源代码 ehcache-1.1JavaEE源代码 ehcache-1.1JavaEE源代码 ehcache-1.1JavaEE源代码 ehcache-1.1JavaEE源...
jar包,官方版本,自测可用
Ehcache是一个开源的Java缓存库,广泛用于提高应用程序性能,通过存储数据副本来减少对数据库的访问。它在Java社区中非常流行,因为它的灵活性、可扩展性和易用性。这里我们关注的是Ehcache的核心库,具体是三个不同...
赠送jar包:ehcache-web-2.0.4.jar; 赠送原API文档:ehcache-web-2.0.4-javadoc.jar; 赠送源代码:ehcache-web-2.0.4-sources.jar; 赠送Maven依赖信息文件:ehcache-web-2.0.4.pom; 包含翻译后的API文档:...
赠送jar包:shiro-ehcache-1.3.2.jar; 赠送原API文档:shiro-ehcache-1.3.2-javadoc.jar; 赠送源代码:shiro-ehcache-1.3.2-sources.jar; 赠送Maven依赖信息文件:shiro-ehcache-1.3.2.pom; 包含翻译后的API文档...