Ehcache 关键概念
Ehcache 关键类
顶级包类图
Ehcache由CacheManager组成, 它管理缓存(Cache),Cache包含元素(Element), Element是实际的名/值对。Cache本身在内存或磁盘中实现。
CacheManager
CacheManager类图
CacheManager包含Cache,Cache依次包含Element。Cache的创建 访问 删除等操作由CacheManager控制。
CacheManager 的创建形式
CacheManager支持两种创建形式:单例(singleton)和实例(instance)。
Singleton形式
Ehcache-1.1仅支持一个CacheManager实例,就是一个单例,在这种情况下,CacheManager可以使用静态工厂方法(Static Factory Method)使用。
Instance形式
自ehcache-1.2起, CacheManager有一些映照各种静态创建方法的构造函数。这使得多个CacheManager可以被同时创建和使用。每个CacheManager要求自身的配置。如果受管下的Cache只使用MemoryStore(内存存储),这没什么特别之处。 如果Cache使用DiskStore(磁盘存储),在每个CacheManager配置中的diskStore 路径(path)必须是唯一的(各不相同)。当新的CacheManager被创建时,Ehcache会检查是否有其他的CacheManager与待创建的CacheManager使用相同的diskStore path。如果有,会抛出CacheException。如果CacheManager是集群的一部分(某集群的集群节点), 监听端口也必须唯一。
混合 Singleton 和 Instance 形式
如果某应用即使用构造函数 又使用静态创建方法来创建CacheManager的实例,会存在一个单例CacheManager, 它每次在静态创建方法被调用时被返回, 以及其他的通过构造函数创建的实例,这两种类型的实例将和平共存。
Ehcache
Ehcache 接口图
所有的Cache实现Ehcache接口。Cache拥有name和attributes。每个Cache包含Element。Ehcache中的Cache类似于其他缓存系统的缓存地域(Cache Region)。Cache的Element存储在MemoryStore,Element溢出到DiskStore是可选的。
Element
Element类图
一个Element是Cache中的原子项目,它有key, value, 和访问记录。Element在Cache中放入(put)或移除(remove)。 Element依赖于Cache的配置可以过期并由Cache移除。
Cache 习惯模式
Caches可以在不同的方式使用。每种方式遵循一个Cache习惯模式。Ehcache支持如下习惯模式:
? 直接操作(Direct Manipulation)
? pull-through
? 自填充(Self Populating)
直接操作(Direct Manipulation)
简言之,你自己调用cache.put(Element element)(放入缓存项目) 和cache.get(Object key)(获取缓存项目)。
你必须知道如何去使用。
自填充 (Self Populating)
你只需要调用cache.get(Object key)。Cache自己知道如何填充缓存项目。