Java的进程内缓存框架:EhCache

EhCache 是一个纯Java的进程内缓存框架,具备快速、精干等特色,是Hibernate中默认的CacheProvider。 bootstrap

 

Ehcache缓存的特色: 缓存

1. 快速. 框架

2. 简单. 分布式

3. 多种缓存策略 ide

4. 缓存数据有两级:内存和磁盘,所以无需担忧容量问题 url

5. 缓存数据会在虚拟机重启的过程当中写入磁盘 spa

6. 能够经过RMI、可插入API等方式进行分布式缓存 线程

7. 具备缓存和缓存管理器的侦听接口 xml

8. 支持多缓存管理器实例,以及一个实例的多个缓存区域 对象

9. 提供Hibernate的缓存实现

 

Ehcache缓存的使用(1) – 安装ehcache

Ehcache 的特色,是一个纯Java ,过程当中(也能够理解成插入式)缓存实现,单独安装Ehcache ,需把ehcache-X.X.jar 和相关类库方到classpath中。如项目已安装了Hibernate ,则不须要作什么,直接能够使用Ehcache 。

 

Ehcache缓存的使用(2) - 生成CacheManager

使用CacheManager 建立并管理Cache

1.建立CacheManager有4种方式:

A:使用默认配置文件建立

Java代码

1.CacheManager manager = CacheManager.create(); 

 

B:使用指定配置文件建立

Java代码

1.CacheManager manager = CacheManager.create("src/config/ehcache.xml"); 

 

C:从classpath中找寻配置文件并建立

Java代码

1.URL url = getClass().getResource("/anothername.xml"); 

2.CacheManager manager = CacheManager.create(url); 

 

D:经过输入流建立

Java代码

1.InputStream fis = new FileInputStream(new File("src/config/ehcache.xml").getAbsolutePath()); 

2.try { 

3.manager = CacheManager.create(fis); 

4.} finally { 

5.fis.close(); 

6.} 

 

Ehcache缓存的使用(3) – 解读Ehcache配置文件ehcache.xml

重要的参数

<diskStore path="D:/work2/renhewww/cache"/>

<cache name=" sampleCache1"

      maxElementsInMemory="1"

           maxElementsOnDisk="10000"

           eternal="false"

           overflowToDisk="true"

           diskSpoolBufferSizeMB="20"

           diskPersistent="true"

           timeToIdleSeconds="43200"

           timeToLiveSeconds="86400"

           memoryStoreEvictionPolicy="LFU"

        />

 

属性解释:

必须属性:

        name:设置缓存的名称,用于标志缓存,唯一

        maxElementsInMemory:在内存中最大的对象数量

        maxElementsOnDisk:在DiskStore中的最大对象数量,如为0,则没有限制

        eternal:设置元素是否永久的,若是为永久,则timeout忽略

        overflowToDisk:是否当memory中的数量达到限制后,保存到Disk

可选的属性:

        timeToIdleSeconds:设置元素过时前的空闲时间

        timeToLiveSeconds:设置元素过时前的活动时间

        diskPersistent:是否disk store在虚拟机启动时持久化。默认为false

   diskExpiryThreadIntervalSeconds:运行disk终结线程的时间,默认为120秒

        memoryStoreEvictionPolicy:策略关于Eviction

缓存子元素:

    cacheEventListenerFactory:注册相应的的缓存监听类,用于处理缓存事件,如put,remove,update,和expire

    bootstrapCacheLoaderFactory:指定相应的BootstrapCacheLoader,用于在初始化缓存,以及自动设置。

 

Ehcache缓存的使用(4) – 建立Cache

经过CacheManager建立Cache

Cache cache = manager.getCache("sampleCache1");

 

Ehcache缓存的使用(5) – 利用cache存取数据

存储数据

Element element = new Element("key1", "value1"); 

cache.put(new Element(element); 

获取数据

Element element = cache.get("key1");

 

 

缓存的建立,采用自动的方式  

CacheManager singletonManager = CacheManager.create(); 

singletonManager.addCache("testCache"); 

Cache test = singletonManager.getCache("testCache");       

或者直接建立Cache    

CacheManager singletonManager = CacheManager.create(); 

Cache memoryOnlyCache = new Cache("testCache", 5000, false, false, 5, 2); 

manager.addCache(memoryOnlyCache); 

Cache test = singletonManager.getCache("testCache");       

 

删除cache    

CacheManager singletonManager = CacheManager.create(); 

singletonManager.removeCache("sampleCache1");      

在使用ehcache后,须要关闭  

CacheManager.getInstance().shutdown()     

caches 的使用 

Cache cache = manager.getCache("sampleCache1");        

执行crud操做    

Cache cache = manager.getCache("sampleCache1"); 

Element element = new Element("key1", "value1"); 

cache.put(element);       

//update    

Cache cache = manager.getCache("sampleCache1"); 

cache.put(new Element("key1", "value1"); 

//This updates the entry for "key1" 

cache.put(new Element("key1", "value2");       

//get Serializable    

Cache cache = manager.getCache("sampleCache1"); 

Element element = cache.get("key1"); 

Serializable value = element.getValue();       

//get non serializable    

Cache cache = manager.getCache("sampleCache1"); 

Element element = cache.get("key1"); 

Object value = element.getObjectValue();       

//remove    

Cache cache = manager.getCache("sampleCache1"); 

Element element = new Element("key1", "value1"  cache.remove("key1");     

相关文章
相关标签/搜索