为什么我们用Ehcache?

Ehcache是java非常常用的缓存工具,它配置简单,使用方便,而且提供了多种策略供用户选择。相信很多java项目都会使用它,我们的项目就是其中一个。在逐渐使用这个工具的过程中,我发现Ehcache本身作为一个项目,从架构框架到代码也是非常优秀的。换句话说,如果国内某个公司来做这样一个缓存工具,不一定甚至肯定达不到Ehcache的水平。

那么从这两个方面来单独介绍下,首先说代码框架,说它是好的框架,主要包括以下几个方面:

一,丰富的API接口,Ehcache可以作为hibernate的二级缓存,也可以单独使用,单独使用时,可以根据静态模板配置,也可以动态配置。对于每个Cache,我们可以监听它的增加和删除事件,对于每个Element,我们同样可以。

二,不断改良的功能,如果查看Ehcache的官方网站,我们发现最新版本的Ehcache是2,5,x,它支持哪些功能呢?你会发现它支持更丰富的分布式部署,支持BigMemory,甚至支持Ruby了。这在前面比较老的版本,是不存在的,后面的版本逐步完善的。用时髦的话说,叫“持续改进”。

附Ehcache版本列表

Ehcache 2.5.x

Ehcache 2.4.x

Ehcache 2.0-2.3

Ehcache 1.7.1

Ehcache 1.6

Ehcache 1.5

Ehcache 1.4

Ehcache 1.3.0

Ehcache 1.2.4

Ehcache 1.2.3

Ehcache 1.1

三,良好的扩展性,不用举例,第二条不断改良的功能,便可知,一个糟糕的架构,后面几乎不可能再优化,不断的优化,只能带来不断的Bug。

再从代码细节来说,Ehcache给了我个人很大的思考,我们自己写代码,总是有好多细节,理所当然的遗漏,比如线程数过多,内存溢出,等等等等。而Ehcache,则理所当然的考虑方方面面,下面列几个代码细节,算是给自己提醒,可以时刻看齐。

一,同步保护,我在调用Ehcache的put和get方法时,担心这两个操作冲突,造成数据异常,所以我封装的方法中,做了同步保护。后来看看Ehcache的代码,发现每次put和get,它都做了同步保护。

二,工厂模式的使用,Ehcache工厂模式的应用,实际可以作为学习这种设计模式的教材。

三,线程控制,Ehcache虽然提供了高速缓存,而且提供了文件存储,但是它本身并非无限制的开线程处理。每个Cache有一个永久线程,当Ehcahe启动的时候,这个线程就建立了。每次put操作,都如同一个“生产者-消费者”模式,生产者put元素,消费者根据配置策略决定有的缓存,有的持久化。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: