现在的位置: 首页 > 综合 > 正文

EhCache入门

2018年04月14日 ⁄ 综合 ⁄ 共 1321字 ⁄ 字号 评论关闭

一、简介
 

  Ehcache是一个用JAVA实现的,使用简单,高速,实现线程安全的缓存管理类库,Ehcache提供了用内存,磁盘文件存储,以及分布式存储方式等多种灵活的Cache管理方案。采用限制比较宽松的Apache Licensev2.0作为授权方式,被广泛地用于Hibernate,Spring,Cocoon等其他开源框架。

二、层次模型
   Ehcache的类层次模型主要为三层,最上层的是CacheManager,它是操作Ehcache的入口。我们可以通过CacheManager.getInstance()获得一个单个的CacheManager,或者通过CacheManager的构造函数创建一个新的CacheManager.每个CacheManager都管理着多个Cache。而每个Cache都以一种类Hash的方式,关联着多个Element。而Element则是我们用于存放要缓存内容的地方。

三、刷新策略
  ehcache的刷新策略是当缓存在放入的时候记录一个放入时间,它是用Lazy Evict的方式,在取的时候同设置的TTL比较。

四、回收策略

   缓存回收就是当缓存满了的时候,Ehcache会根据指定的策略来清理缓存。这里的缓存回收策略有别与Ehcache中的失效清理策略。失效清理策略是对失效的Element进行批量清理时所采用的策略,最终所有失效的Element都将被清理,只不过是清理的先后顺序不同罢了。Ehcache中缓存的最大Element数是由maxElementsInMemory来指定的。当缓存中的Element个数达到maxElementsInMemory指定的值时,Ehcache会根据具体的策略来清理缓存,默认的策略是LRU(最近最少使用)。
   磁盘缓存大小默认是没有限制的,不过可通过maxElementsOnDisk来指定。当磁盘缓存达到maxElementsOnDisk指定的值时,Ehcache会清理磁盘中的缓存使用默认策略是LFU(使用频率最低)。
   MemoryStore支持三种策略:LRU、LFU、FIFO。

   1.LRU:最近最少使用的,缓存的元素有一个时间戳,当缓存容量满了,而又需要腾出地方来缓存新的元素的时候,那么现有缓存元素中时间戳离当前时间最远的元素将被清除缓存。

   2.LFU:最少被使用,缓存的元素有一个hit属性,hit值最小的将会被清除缓存。

   3.FIFO:先进先出

五、事件处理
   可以为CacheManager添加事件监听,当对CacheManager增删Cache时,事件处理器将会得到通知。要配置事件处理,需要通过ehcache的配置文件来完成。可以为Cache添加事件监听,当对Cache增删Element时,事件处理器将会得到通知。要配置事件处理,需要通过ehcache的配置文件来完成。

六、使用场合
   1、比较少更新的数据
  EhCache一般要使用在比较少执行write操作的表(包括update,insert,delete等)[Hibernate的二级缓存也都是这样]
   2、对并发要求不是很严格的情况
   两台机子中的缓存是不能实时同步的

抱歉!评论已关闭.