java缓存的使用
缓存
1,缓存的定义与作用
2,缓存的使用范围(命中率高、高访问量)
3,缓存策略(命中率,最大元素,清空策略);
4,缓存介质(内存缓存,硬盘缓存,数据库缓存)(本地缓存(ehcache,oscache)与远程缓存(memcached));
5,osCache缓存特点:
<1>缓存任何对象,不受限制地缓存部分jsp页面或http请求
<2>拥有全面的api
<3>永久缓存,缓存能随意写入硬盘,因此允许昂贵的创建数据来保存缓存,甚至能让应用重启
<4>支持集群,集群缓存数据能被单个地进行参数配置,不需要修改代码
<5>缓存记录过期,可以最大限度的控制缓存对象的过期,包括可插入式刷新策略,在默认性能不需要的时候.
6,oscache的使用,
<1>下载occache.jar,放在web-inf/lib下,配置文件oscache.properties放入web-inf/classes目录下
<2>使用jsp标签缓存部分页面<%@taglib uri="oscache" prefix="os"%>有5个标签,cache,usecached,flush,addgroup,addgroups.
7,使用过滤器缓存整个页面
<filter>
<filter-name></filter-name>
<filter-class></filter-class>
<init-param>
</init-param>
</filter>
8使用oscache api缓存java对象.
主要通过GeneralCacheAdministrator来建立、刷新和管理缓存,可以通过加载cache.properties属性来创建一个缓存实例,最好使用单例模式来创建GeneralCacheAdministrator.
9,在ibatis中使用oscache
<cacheModel id="userCache" type="OSCACHE">
<flushInterval hours="24"/>
<flushOnExecute statement="updateUser"/>
<property name="size" value="1000"/>
</cacheMode>
10ehcache的使用
<1>下载ehcache.jar,并配置ehcache.xml文件,配置各种属性.使用<defaultCache>表示
<2>属性解释:
<!--
配置自定义缓存:
name: 缓存名称。通常为缓存对象的类名(非严格标准)。
maxElementsInMemory: 设置基于内存的缓存可存放对象的最大数目。
maxElementsOnDisk: 设置基于硬盘的缓存可存放对象的最大数目。
eternal: 如果为true,表示对象永远不会过期,此时会忽略timeToIdleSeconds和timeToLiveSeconds属性,默认为false;
timeToIdleSeconds: 设定允许对象处于空闲状态的最长时间,以秒为单位。当对象自从最近一次被访问后,如果处于空闲状态的时间超过了timeToIdleSeconds属性值,这个对象就会过期。
当对象过期,EHCache将把它从缓存中清空。只有当eternal属性为false,该属性才有效。如果该属性值为0,则表示对象可以无限期地处于空闲状态。
timeToLiveSeconds:设定对象允许存在于缓存中的最长时间,以秒为单位。当对象自从被存放到缓存中后,如果处于缓存中的时间超过了 timeToLiveSeconds属性值,这个对象就会过期。
当对象过期,EHCache将把它从缓存中清除。只有当eternal属性为false,该属性才有效。如果该属性值为0,则表示对象可以无限期地存在于缓存中。timeToLiveSeconds必须大于timeToIdleSeconds属性,才有意义。
overflowToDisk: 如果为true,表示当基于内存的缓存中的对象数目达到了 maxElementsInMemory界限后,会把益出的对象写到基于硬盘的缓存中。注意:如果缓存的对象要写入到硬盘中的话,则该对象必须实现了Serializable接口才行。
memoryStoreEvictionPolicy: 缓存对象清除策略。有三种:FIFO、LFU、LRU
-->
<3>如果使用更多的缓存策略,可以添加类似的<cache>元素,其属性与<defaultCache>相同.
11,使用过滤器缓存web页面,需要在web.xml中添加过滤器
12,使用ehcache api缓存java对象
CacheManager manager=CacheManager.create();//使用默认配置文件创建
CacheManager manager=CacheManager.create("src/config/ehcache.xml")//使用指定配置文件创建
Url url=getClass().getResource("/anothername.xml");
CacheManager manager=CacheManager.create(url);//从classpath中寻找配置文件并创建.
Inputstream fis=new FileInputStream(new File("src/config/ehcahce.xml").getAbsolutePath();
CacheManager manager=CacheManager.create(fis);//使用输入流来创建.
加载一个echache.xml配置的缓存策略
Cache cache=manager.getCache("sampleCachel");
然后往cache加入元素
Element element=new Element("key1","value1");
cache.put(new Element(element));
从cache中取得元素
Element element=cache.get("key1");
结束卸载CacheManager:
manager.shutdown();
java缓存的使用的更多相关文章
- (转)java缓存技术,记录
http://blog.csdn.net/madun/article/details/8569860 最近再ITEYE上看到关于讨论JAVA缓存技术的帖子比较多,自己不懂,所以上网大概搜了下,找到一篇 ...
- JAVA缓存技术
介绍 JNotify:http://jnotify.sourceforge.net/,通过JNI技术,让Java代码可以实时的监控制定文件夹内文件的变动信息,支持Linux/Windows/MacOS ...
- Java 缓存技术
以下仅是对map对方式讨论.没有对点阵图阵讨论.作缓存要做以下2点: 1:清理及更新缓存时机的处理: . 虚拟机内存不足,清理缓存 .. 缓存时间超时,或访问次数超出, 启动线程更新 2:类和方法的 ...
- JAVA缓存技术之EhCache
最近再ITEYE上看到关于讨论JAVA缓存技术的帖子比较多,自己不懂,所以上网大概搜了下,找到一篇,暂作保存,后面如果有用到可以参考.此为转贴,帖子来处:http://cogipard.info/ar ...
- Java缓存
Java中要用到缓存的地方很多,首当其冲的就是持久层缓存,针对持久层谈一下: 要实现java缓存有很多种方式,最简单的无非就是static HashMap,这个显然是基于内存缓存,一个map就可以搞定 ...
- JAVA缓存技术之EhCache(转)
最近再ITEYE上看到关于讨论JAVA缓存技术的帖子比较多,自己不懂,所以上网大概搜了下,找到一篇,暂作保存,后面如果有用到可以参考.此为转贴,帖子来处:http://cogipard.info/ar ...
- java缓存技术(转)
最近在做java缓存,了解了一下.以下仅是对map对方式讨论.没有对点阵图阵讨论.作缓存要做以下2点: 1:清理及更新缓存时机的处理: . 虚拟机内存不足,清理缓存 .. 缓存时间超时,或访问 ...
- 高性能 Java 缓存库 — Caffeine
http://www.baeldung.com/java-caching-caffeine 作者:baeldung 译者:oopsguy.com 1.介绍 在本文中,我们来看看 Caffeine - ...
- Map实现java缓存机制的简单实例
缓存是Java中主要的内容,主要目的是缓解项目访问数据库的压力以及提升访问数据的效率,以下是通过Map实现java缓存的功能,并没有用cache相关框架. 一.缓存管理类 CacheMgr.java ...
- Java缓存相关memcached、redis、guava、Spring Cache的使用
随笔分类 - Java缓存相关 主要记录memcached.redis.guava.Spring Cache的使用 第十二章 redis-cluster搭建(redis-3.2.5) 摘要: redi ...
随机推荐
- django上课笔记3-ORM补充-CSRF (跨站请求伪造)
一.ORM补充 ORM操作三大难点: 正向操作反向操作连表 其它基本操作(包含F Q extra) 性能相关的操作 class UserInfo(models.Model): uid = models ...
- hdoj5793 A Boring Question【找规律】
找出的规律.... 1 2 3 2 2 7 3 2 15 4 2 31 5 2 63 1 3 4 2 3 13 3 3 40 4 3 121 5 3 361 然后我们来推个公式: 比如说a2=3a1+ ...
- display:table / display:table-cell 用法
display:table 元素会作为块级表格来显示(类似table):表格前后带有换行符: display:table-cell 元素会作为表格单元格来显示(类似<td> 和 < ...
- Mirror Number SPOJ - MYQ10
Mirror Number SPOJ - MYQ10 题意:http://blog.csdn.net/hcbbt/article/details/38349367 稍微改一下http://www.cn ...
- 初探Hibernate3源码--读取配置文件
依照个人推测,要实现ORM框架,关键是如何拼凑sql语句再通过jdbc来进行对数据库的访问,另外将数据库返回的数据记录封装成对应的类也是必不可少的. 那么实现ORM框架的基本思路如下: 1,读取xml ...
- h5-29-WEB存储-通讯录实战.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 利用uiautomator实现Android移动app启动时间的测试
为了减少因手工测试的反应误差,这里介绍下如何利用Android自带的自动化测试工具uiautomator实现app启动时间的测试. 测试基本思路如下: 1.启动前记录当前的时间戳 2.启动app,直至 ...
- Asp.Net MVC中捕捉错误路由并设置默认Not Found页面。
在Global中写一个Application_Error捕捉错误路由并重定向到Not Found页面.这里是全局性抓取错误路由,此处还可以写由错误路由导致访问失败的日志记录. protected vo ...
- 外文翻译 《How we decide》多巴胺的预言 第一节
这是第二章的起始... 书的导言 1991年2月24日凌晨.第一与第二海军陆战队大批向北进入了沙特阿拉伯的沙漠地带,他们从这来进入科威特.这批军队是伊拉克入侵8个月以来,同盟国第一批进入科威特的部队. ...
- Java_静态变量
class c1c { private static int num = 0; private static double pi = 3.14; private double radius; priv ...