Ehcache

首先了解一下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>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值