Java中 ehcache简单使用实例

来源:互联网 发布:qq飞车天使之翼数据 编辑:程序博客网 时间:2024/04/27 23:27

<span style="font-family:Arial, Helvetica, sans-serif;"><span style="background-color: rgb(255, 255, 255);">ehcache 简单实用介绍 Java中常用的本地缓存,入门级文章。</span></span>
<span style="font-family:Arial, Helvetica, sans-serif;"><span style="background-color: rgb(255, 255, 255);">将数据缓存至本地的简单方法。简单实用的java 本地缓存框架。</span></span>
<span style="font-family:Arial, Helvetica, sans-serif;"><span style="background-color: rgb(255, 255, 255);"></span></span>
<span style="font-family:Arial, Helvetica, sans-serif;"><span style="background-color: rgb(255, 255, 255);">使用步骤:</span></span>
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">1、添加jar包 </span><img src="data:image/png;base64,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" alt="" style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);" />

2、在src下添加配置文件 ehcache.xml  

ehcache 可以将缓存的数据存储在内存中,也可以存储在磁盘中,也可以两者都存,

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xsi:noNamespaceSchemaLocation="ehcache.xsd">    <diskStore path="d:\ehcache"/>    <defaultCache      maxElementsInMemory="10000"      maxElementsOnDisk="0"      eternal="true"      overflowToDisk="true"      diskPersistent="false"      timeToIdleSeconds="0"      timeToLiveSeconds="0"      diskSpoolBufferSizeMB="50"      diskExpiryThreadIntervalSeconds="120"      memoryStoreEvictionPolicy="LFU"      />    <cache name="demoCache"      maxElementsInMemory="100"      maxElementsOnDisk="25000"      eternal="flase"      overflowToDisk="true"      diskPersistent="true"      timeToIdleSeconds="120"      timeToLiveSeconds="180"      diskSpoolBufferSizeMB="50"      diskExpiryThreadIntervalSeconds="600"      memoryStoreEvictionPolicy="FIFO"      />  </ehcache>
配置文件介绍

nameCache的唯一标识 

maxElementsInMemory:内存中最大缓存对象数。 

maxElementsOnDisk:磁盘中最大缓存对象数,若是0表示无穷大。 

eternalElement是否永久有效,一但设置了,timeout将不起作用。 

overflowToDisk:配置此属性,当内存中Element数量达到maxElementsInMemory时,Ehcache将会Element写到磁盘中。 

timeToIdleSeconds:设置Element在失效前的允许闲置时间。仅当element不是永久有效时使用,可选属性,默认值是0,也就是可闲置时间无穷大。 

timeToLiveSeconds:设置Element在失效前允许存活时间。最大时间介于创建时间和失效时间之间。仅当element不是永久有效时使用,默认是0.,也就是element存活时间无穷大。 

diskPersistent:是否缓存虚拟机重启期数据。 

diskExpiryThreadIntervalSeconds:磁盘失效线程运行时间间隔,默认是120秒。 

diskSpoolBufferSizeMB:这个参数设置DiskStore(磁盘缓存)的缓存区大小。默认是30MB。每个Cache都应该有自己的一个缓冲区。 

memoryStoreEvictionPolicy:当达到maxElementsInMemory限制时,Ehcache将会根据指定的策略去清理内存。默认策略是LRU(最近最少使用)、FIFO(先进先出)、LFU(最不经常使用算法)。


3、代码中使用即可

1、存储、读取使用

public class MyEhcache {    public static void main(String[] args) {        MyEhcache eh=new MyEhcache();        EhcacheBean bean1=new EhcacheBean(1,"aaa",2);        CacheManager manager = CacheManager.create(eh.getClass().getClassLoader().getResource("").getPath()+"/ehcache.xml");          Cache demo = manager.getCache("demoCache");          demo.put(new Element(bean1.getId(),bean1));        Element e=demo.get(bean1.getId());        System.out.println(((EhcacheBean)e.getValue()).getName());    }}
2、缓存数据可以实例化至磁盘中,程序重启、宕机等情况下,可以继续使用

若要使工程重启时不影响缓存的数据,应该将数据实例化,修改配置文件中的diskPersistent属性,并且在重启前调用ehcache.flush()方法强制将所有数据实例化到硬盘中,即可在重启工程后继续使用缓存数据。





0 0