Ehcache 关键概念

Ehcache 关键类

[img]http://dl.iteye.com/upload/attachment/334562/950c0292-d03e-3826-9c04-3176c3530661.png[/img]

[align=center]顶级包类图[/align]

Ehcache由CacheManager组成, 它管理缓存(Cache),Cache包含元素(Element), Element是实际的名/值对。Cache本身在内存或磁盘中实现。

[size=large][b]CacheManager[/b][/size]

[img]http://dl.iteye.com/upload/attachment/334564/b49c0d07-a41b-35bb-95c3-d102782172fe.png[/img]

[align=center]CacheManager类图[/align]

CacheManager包含Cache,Cache依次包含Element。Cache的创建 访问 删除等操作由CacheManager控制。

[size=medium][b]CacheManager 的创建形式[/b][/size]
CacheManager支持两种创建形式:单例(singleton)和实例(instance)。

[b]Singleton形式[/b]
Ehcache-1.1仅支持一个CacheManager实例,就是一个单例,在这种情况下,CacheManager可以使用静态工厂方法(Static Factory Method)使用。

[b]Instance形式[/b]
自ehcache-1.2起, CacheManager有一些映照各种静态创建方法的构造函数。这使得多个CacheManager可以被同时创建和使用。每个CacheManager要求自身的配置。如果受管下的Cache只使用MemoryStore(内存存储),这没什么特别之处。 如果Cache使用DiskStore(磁盘存储),在每个CacheManager配置中的diskStore 路径(path)必须是唯一的(各不相同)。当新的CacheManager被创建时,Ehcache会检查是否有其他的CacheManager与待创建的CacheManager使用相同的diskStore path。如果有,会抛出CacheException。如果CacheManager是集群的一部分(某集群的集群节点), 监听端口也必须唯一。

[b]混合 Singleton 和 Instance 形式[/b]
如果某应用即使用构造函数 又使用静态创建方法来创建CacheManager的实例,会存在一个单例CacheManager, 它每次在静态创建方法被调用时被返回, 以及其他的通过构造函数创建的实例,这两种类型的实例将和平共存。

[size=large][b]Ehcache[/b][/size]

[img]http://dl.iteye.com/upload/attachment/334568/61f36154-f1d7-38de-8dae-9d6b5c406ccb.png[/img]

[align=center]Ehcache 接口图[/align]

所有的Cache实现Ehcache接口。Cache拥有name和attributes。每个Cache包含Element。Ehcache中的Cache类似于其他缓存系统的缓存地域(Cache Region)。Cache的Element存储在MemoryStore,Element溢出到DiskStore是可选的。

[size=large][b]Element[/b][/size]

[img]http://dl.iteye.com/upload/attachment/334570/ca2a44c4-4639-374a-8667-c4e2d481739f.png[/img]
[align=center]Element类图[/align]

一个Element是Cache中的原子项目,它有key, value, 和访问记录。Element在Cache中放入(put)或移除(remove)。 Element依赖于Cache的配置可以过期并由Cache移除。

[size=large][b]Cache 习惯模式[/b][/size]
Caches可以在不同的方式使用。每种方式遵循一个Cache习惯模式。Ehcache支持如下习惯模式:
• 直接操作(Direct Manipulation)
• pull-through
• 自填充(Self Populating)

[b]直接操作(Direct Manipulation)[/b]
简言之,你自己调用cache.put(Element element)(放入缓存项目) 和cache.get(Object key)(获取缓存项目)。
你必须知道如何去使用。

[b]自填充 (Self Populating)[/b]
你只需要调用cache.get(Object key)。Cache自己知道如何填充缓存项目。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值