ehcache.xml配置文件详解

简介: 1.ehcache.xml配置文件详解2.ehcache 包可用方法介绍:创建CacheManager 的方法:方法一:CacheManager manager = new Cac...

1.ehcache.xml配置文件详解

<ehcache>

<!--磁盘存储配置:用来指定缓存在磁盘上的存储位置。

可以使用JavaVM环境变量(user.home, user.dir, java.io.tmpdir)-->

<diskStore path = "c:/cache/" />


<!--指定CacheManagerEventListenerFactory,这个对象在缓存添加的时候会得到相应的通知。

CacheManagerEventListenerFactory的属性:

*class CacheManagerEventListenerFactory的一个实现类。

*properties CacheManagerEventListenerFactory的属性值,以逗号(,)分割多个属性。

如果没有实现类被指定,则系统不创建CacheManager的监听器,没有默认值-->

<cacheManagerEventListenerFactory class="" properties="" />


<!--在进行分布式缓存的应用时需要指定CacheManagerPeerProviderFactory,用来生成CacheManagerPeerProvider的实例,以便和集群中的其他CacheManager通信。

CacheManagerPeerProvider的属性:

*class CacheManagerPeerProviderFactory的一个实现类。

*properties CacheManagerPeerProviderFactory的属性值,以逗号(,)分割多个属性。


Ehcache内建了2种基于RMI分布系统的通信策略:

*automatic :使用多播组。在一个节点加入或者推出集群的时候自动感应。

*manual :硬编码方式

-->

<cacheManagerPeerListenerFactory class="" properties="" />


<!--默认缓存配置,以下属性是必须的:

name cache的标识符,在一个CacheManager中必须唯一。

maxElementsInMemory : 在内存中缓存的element的最大数目。

maxElementsOnDisk : 在磁盘上缓存的element的最大数目。

eternal : 设定缓存的elements是否有有效期。如果为truetimeouts属性被忽略。

overflowToDisk : 设定当内存缓存溢出的时候是否将过期的element缓存到磁盘上。


以下属性是可选的:

timeToIdleSeconds : 缓存element在过期前的空闲时间。

timeToLiveSeconds : 缓存element的有效生命期。

diskPersistent : 在VM重启的时候是否持久化磁盘缓存,默认是false

diskExpiryThreadIntervalSeconds : 磁盘缓存的清理线程运行间隔,默认是120.

memoryStoreEvictionPolicy : 当内存缓存达到最大,有新的element加入的时候,

移除缓存中element的策略。默认是LRU,可选的有LFUFIFO


缓存子元素:
cacheEventListenerFactory
:注册相应的的缓存监听类,用于处理缓存事件,如put,remove,update,expire
bootstrapCacheLoaderFactory:
指定相应的BootstrapCacheLoader,用于在初始化缓存,以及自动设置。

-->

<defaultCache

maxElementsInMemory="10000"

eternal="false"

timeToIdleSeconds="120"

timeToLiveSeconds="120"

overflowToDisk="true"

maxElementsOnDisk="1000000"

diskPersistent="false"

diskExpiryThreadIntervalSeconds="120"

memoryStoreEvictionPolicy="LRU"

/>

<!--cache配置同defaultCache -->

<cache name="test"
maxElementsInMemory="100"
eternal="false"
timeToIdleSeconds="100"
timeToLiveSeconds="100"
overflowToDisk="false"

/>

</ehcache>


2.ehcache   包可用方法介绍:

创建CacheManager 的方法:

方法一:
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();
}


获取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();


添加和删除缓存元素:

设置一个名为testCache 的新cache,属性为默认:
CacheManager singletonManager = CacheManager.create();
singletonManager.addCache("testCache");
Cache test = singletonManager.getCache("testCache");

设置一个名为testCache 的新cache,并定义其属性: 
CacheManager singletonManager = CacheManager.create();
Cache memoryOnlyCache = new Cache("testCache", 5000, false, false, 5, 2);
singletonManager.addCache(memoryOnlyCache);
Cache test = singletonManager.getCache("testCache");

Cache 
属性说明:

构造函数:
public Cache(String name,

int maxElementsInMemory,

boolean overflowToDisk,
boolean eternal,

long timeToLiveSeconds,

long timeToIdleSeconds)

参数说明:
name 
:元素名字。
maxElementsInMemory 
:设定内存中创建对象的最大值。
overflowToDisk 
: 设置当内存中缓存达到 maxInMemory 限制时元素是否可写到磁盘上。
eternal 
: 设置元素是否永久驻留。
timeToIdleSeconds 
: 设置某个元素消亡前的停顿时间。也就是在一个元素消亡之前,两次访问时间的最大时间间隔值。只能在元素不是永久驻留时有效。
timeToLiveSeconds 
: 设置某个元素消亡前的生存时间。也就是一个元素从构建到消亡的最大时间间隔值。只能在元素不是永久驻留时有效。

删除缓存元素:


CacheManager singletonManager = CacheManager.create();
singletonManager.removeCache("testCache");


关闭缓存管理器 CacheManager

CacheManager.getInstance().shutdown();


对于缓存对象的操作:


放入一个简单的对象到缓存元素;
Cache cache = manager.getCache("testCache");
Element element = new Element("key1", "value1");
cache.put(element);

得到一个序列化后的对象属性值;
Cache cache = manager.getCache("testCache");
Element element = cache.get("key1");
Serializable value = element.getValue();

得到一个没有序列化后的对象属性值;
Cache cache = manager.getCache("testCache");
Element element = cache.get("key1");
Object value = element.getObjectValue();

删除一个对象从元素;
Cache cache = manager.getCache("testCache");
Element element = new Element("key1", "value1");
cache.remove("key1");

对于永固性磁盘存储,立即存储到磁盘:

Cache cache = manager.getCache("testCache");
cache.flush();


获得缓存大小:


得到缓存的对象数量;
Cache cache = manager.getCache("testCache");
int elementsInMemory = cache.getSize();

得到缓存对象占用内存的数量
Cache cache = manager.getCache("testCache");
long elementsInMemory = cache.getMemoryStoreSize();

得到缓存对对象占用磁盘的数量
Cache cache = manager.getCache("testCache");
long elementsInMemory = cache.getDiskStoreSize();

关于缓存的读取和丢失的记录:


得到缓存读取的命中次数;
Cache cache = manager.getCache("testCache");
int hits = cache.getHitCount();

得到内存中缓存读取的命中次数;
Cache cache = manager.getCache("testCache");
int hits = cache.getMemoryStoreHitCount();

得到磁盘中缓存读取的命中次数;
Cache cache = manager.getCache("testCache");
int hits = cache.getDiskStoreCount();

得到缓存读取的丢失次数;
Cache cache = manager.getCache("testCache");
int hits = cache.getMissCountNotFound();

得到缓存读取的已经被销毁的对象丢失次数;
Cache cache = manager.getCache("testCache");
int hits = cache.getMissCountExpired();

目录
相关文章
|
4月前
|
XML 数据采集 JavaScript
Java【XML 配置文件解析】
Java【XML 配置文件解析】
|
7月前
|
XML 存储 JSON
使用自定义XML配置文件在.NET桌面程序中保存设置
本文将详细介绍如何在.NET桌面程序中使用自定义的XML配置文件来保存和读取设置。除了XML之外,我们还将探讨其他常见的配置文件格式,如JSON、INI和YAML,以及它们的优缺点和相关的NuGet类库。最后,我们将重点介绍我们为何选择XML作为配置文件格式,并展示一个实用的示例。
96 0
|
4天前
|
XML Java 数据库连接
Javaweb之Mybatis的XML配置文件的详细解析
Javaweb之Mybatis的XML配置文件的详细解析
13 0
|
1月前
|
Java 数据库连接 mybatis
Mybatis+mysql动态分页查询数据案例——Mybatis的配置文件(mybatis-config.xml)
Mybatis+mysql动态分页查询数据案例——Mybatis的配置文件(mybatis-config.xml)
20 1
|
2月前
|
负载均衡 Dubbo NoSQL
Dubbo配置文件解密:从dubbo-consumer.xml到dubbo-provider.xml一网打尽【十】
Dubbo配置文件解密:从dubbo-consumer.xml到dubbo-provider.xml一网打尽【十】
43 0
|
3月前
|
XML Java 数据格式
javaweb实训第五天下午——xml配置文件约束报错问题
问题描述: 如果电脑连不上网,或者网速不好可能会造成Spring框架中xml配置文件出现错误。但是这个错误不影响项目的运行的;
20 0
|
8月前
|
XML Java 数据库连接
【spring源码系列-03】xml配置文件启动spring时refresh的前置工作
【spring源码系列-03】xml配置文件启动spring时refresh的前置工作
83 0
|
4月前
|
XML Java 数据库连接
MyBatis核心配置文件解析: 一步步深入理解mybatis-config.xml
MyBatis核心配置文件解析: 一步步深入理解mybatis-config.xml
101 0
MyBatis核心配置文件解析: 一步步深入理解mybatis-config.xml
|
4月前
|
XML Java 数据库连接
|
4月前
|
SQL Java 关系型数据库
Hibernate - hibernate.cfg.xml配置文件详解
Hibernate 配置文件主要用于配置数据库连接和 Hibernate 运行时所需的各种属性。每个 Hibernate 配置文件对应一个 Configuration 对象–这样说不太正确,应该是项目初始化时会实例化Configuration对象,该实例对象(Configuration对象)会读取配置文件配置的属性值为实例对象赋值。
87 0