Ehcache基础学习
来源:互联网 发布:mac 菜单栏的锁不见了 编辑:程序博客网 时间:2024/06/05 18:17
Ehcache 是现在最流行的纯Java开源缓存框架,配置简单、结构清晰、功能强大,最初知道它,是从Hibernate的缓存开始的。
大纲图
核心定义
cache manager:缓存管理器,以前是只允许单例的,不过现在也可以多实例了。
cache:缓存管理器内可以放置若干cache,存放数据的实质,所有cache都实现了Ehcache接口。
element:单条缓存数据的组成单位
system of record(SOR):可以取到真实数据的组件,可以是真正的业务逻辑、外部接口调用、存放真实数据的数据库等等,缓存就是从SOR中读取或者写入到SOR中去的。
EHCache API的基本用法
首先介绍CacheManager类。它主要负责读取配置文件,默认读取CLASSPATH下的ehcache.xml,根据配置文件创建并管理Cache对象。
// 使用默认配置文件创建CacheManagerCacheManager manager = CacheManager.create();// 通过manager可以生成指定名称的Cache对象Cache cache = cache = manager.getCache("demoCache");// 使用manager移除指定名称的Cache对象manager.removeCache("demoCache");可以通过调用manager.removalAll()来移除所有的Cache。通过调用manager的shutdown()方法可以关闭CacheManager。有了Cache对象之后就可以进行一些基本的Cache操作,例如://往cache中添加元素Element element = new Element("key", "value");cache.put(element);//从cache中取回元素Element element = cache.get("key");element.getValue();//从Cache中移除一个元素cache.remove("key");
可以直接使用上面的API进行数据对象的缓存,这里需要注意的是对于缓存的对象都是必须可序列化的。
配置文件
配置文件ehcache.xml中命名为demoCache的缓存配置:
<cache name="demoCache"maxElementsInMemory="10000"eternal="false"overflowToDisk="true"timeToIdleSeconds="300"timeToLiveSeconds="600"memoryStoreEvictionPolicy="LFU" />
各配置参数的含义:
maxElementsInMemory:缓存中允许创建的最大对象数
eternal:缓存中对象是否为永久的,如果是,超时设置将被忽略,对象从不过期。
timeToIdleSeconds:缓存数据的钝化时间,也就是在一个元素消亡之前,两次访问时间的最大时间间隔值,这只能在元素不是永久驻留时有效,如果该值是 0 就意味着元素可以停顿无穷长的时间。
timeToLiveSeconds:缓存数据的生存时间,也就是一个元素从构建到消亡的最大时间间隔值,这只能在元素不是永久驻留时有效,如果该值是0就意味着元素可以停顿无穷长的时间。
overflowToDisk:内存不足时,是否启用磁盘缓存。
memoryStoreEvictionPolicy:缓存满了之后的淘汰算法。
如果应用需要配置多个不同命名并采用不同参数的Cache,可以相应修改配置文件,增加需要的Cache配置即可。
总结
EHCache是纯Java实现的简单、快速的Cache组件。EHCache支持内存和磁盘的缓存,支持LRU、LFU和FIFO多种淘汰算法,支持分 布式的Cache,可以作为Hibernate的缓存插件。同时它也能提供基于Filter的Cache,该Filter可以缓存响应的内容并采用 Gzip压缩提高响应速度。
- Ehcache基础学习
- Ehcache学习
- Ehcache学习
- Ehcache 学习
- ehcache学习
- Ehcache学习
- ehcache入门基础示例
- Ehcache学习(四)ehcache缓存共享
- Ehcache学习总结(1)--Ehcache入门介绍
- Ehcache学习总结
- Ehcache学习笔记
- EHCache 学习笔记
- Ehcache学习笔记
- ehcache学习文档
- EhCache缓存学习
- EHCache学习笔记
- 缓存之EhCache学习
- EhCache缓存学习
- leetcode系列(55)Permutations, Permutations II
- 蓝懿ios 技术内容交流和心得分享10.31
- jdk1.6的垃圾回收器
- 函数调用
- spring jpa扫描不同jar包下的类
- Ehcache基础学习
- IBatis和Hibernate区别
- Java实现杨辉三角
- 结构型模式有哪些分别有哪些特点
- hdu 5512 (Pagodas) 2015 ACM/ICPC 亚洲区沈阳赛区 (题目编号1004)
- PHP foreach嵌套if else的问题
- iOS中copy 学习笔记
- Cococapods 添加第三方,导入不了头文件
- jquery validate 插件:(1)使用说明