Ehcache

来源:互联网 发布:checkpoint软件 编辑:程序博客网 时间:2024/06/18 15:45

首先了解一下Ehcache.
EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认的CacheProvider。

主要的特性有:
1. 快速
2. 简单
3. 多种缓存策略
4. 缓存数据有两级:内存和磁盘,因此无需担心容量问题
5. 缓存数据会在虚拟机重启的过程中写入磁盘
6. 可以通过RMI、可插入API等方式进行分布式缓存
7. 具有缓存和缓存管理器的侦听接口
8. 支持多缓存管理器实例,以及一个实例的多个缓存区域
9. 提供Hibernate的缓存实现

详细了解还需要到Ehcache官网:http://www.ehcache.org/

第一案例:

CacheManager cacheManager = CacheManagerBuilder.newCacheManagerBuilder() /*1*/                .withCache("preConfigured",                    CacheConfigurationBuilder.newCacheConfigurationBuilder(Long.class, String.class, ResourcePoolsBuilder.heap(10)))/*2*/                 .build(); /*3*/            cacheManager.init(); /*4*/            Cache<Long, String> preConfigured =                cacheManager.getCache("preConfigured", Long.class, String.class);/*5*/             Cache<Long, String> myCache = cacheManager.createCache("myCache", /*6*/                CacheConfigurationBuilder.newCacheConfigurationBuilder(Long.class, String.class, ResourcePoolsBuilder.heap(10)));            myCache.put(1L, "da one!"); /*7*/            String value = myCache.get(1L); /*8*/            System.out.println(value);            cacheManager.removeCache("preConfigured"); /*9*/            cacheManager.close(); /*10*/

1.静态方法org.ehcache.config.builders.CacheManagerBuilder.newCacheManagerBuilder返回一个新的org.ehcache.config.builders.CacheManagerBuilder实例。
2.使用构建器定义一个Cache别名为“preConfigured”。当cacheManager.build()实际CacheManager实例被调用时,将创建此缓存。第一个String参数是缓存别名,用于从中检索缓存CacheManager。第二个参数,org.ehcache.config.CacheConfiguration用于配置Cache。我们使用静态newCacheConfigurationBuilder()方法org.ehcache.config.builders.CacheConfigurationBuilder来创建默认配置。
3.最后,调用build()返回一个完全实例化但未初始化的,CacheManager我们可以使用。
4.在使用之前CacheManager,需要进行初始化,可以通过以下两种方式之一进行操作:CacheManager.init()在CacheManager实例上调用,或者调用CacheManagerBuilder.build(boolean init)布尔参数设置为true的方法。
5.通过将其别名,密钥类型和值类型传递给它来检索缓存CacheManager。例如,为了获得在步骤2中,你需要它的声明的缓存alias=”preConfigured”,keyType=Long.class和valueType=String.class。对于类型安全性,我们要求要传递的关键和价值类型,如果与我们预期的不同,那么在应用程序的生命周期CacheManager的ClassCastException早期就会出现。这样可以Cache防止被随机类型的污染。
6.该CacheManager可用于创建新的Cache按需实例。就像在步骤2中一样,它需要传递一个别名以及一个CacheConfiguration。实例化和完全初始化的Cache添加将通过CacheManager.getCacheAPI 返回和/或访问。
7.新添加的项目Cache现在可用于存储由键值对组成的条目。put方法的第一个参数是key,第二个参数是value。记住键和值类型必须与那些中定义的类型相同CacheConfiguration。此外,密钥必须是唯一的,并且仅与一个值相关联。
8.通过调用该cache.get(key)方法从缓存中检索一个值。它只需要一个参数,它是键,并返回与该键相关联的值。如果没有与该键相关联的值,则返回null。
9.我们可以CacheManager.removeCache(String)给定Cache。该CacheManager会不仅删除其参考 Cache,但也将其关闭。这些Cache版本全部在本地暂存资源(如内存)。对此的引用Cache变得不可用。
10.为了释放所有瞬时资源(内存,线程,…)a CacheManager提供给Cache它管理的实例,你必须调用CacheManager.close(),这反过来关闭Cache当时已知的所有实例。

您可以创建一个XML文件来配置CacheManager。

<config    xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'    xmlns='http://www.ehcache.org/v3'    xsi:schemaLocation="http://www.ehcache.org/v3 http://www.ehcache.org/schema/ehcache-core.xsd">  <cache alias="foo">     <key-type>java.lang.String</key-type>     <value-type>java.lang.String</value-type>     <resources>      <heap unit="entries">2000</heap>       <offheap unit="MB">500</offheap>     </resources>  </cache>  <cache-template name="myDefaults">     <key-type>java.lang.Long</key-type>    <value-type>java.lang.String</value-type>    <heap unit="entries">200</heap>  </cache-template>  <cache alias="bar" uses-template="myDefaults">     <key-type>java.lang.Number</key-type>  </cache>  <cache alias="simpleCache" uses-template="myDefaults" /> </config>
原创粉丝点击