- 浏览: 229747 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
nujgnef:
[size=x-large][color=yellow][/c ...
Spring中PROPAGATION_REQUIRED的意思? -
wrq_mimi:
...
使用BeanNameAutoProxyCreator实现spring的自动代理 -
Luob.:
不行啊 ,我这里报错了org.springframework. ...
使用BeanNameAutoProxyCreator实现spring的自动代理 -
blueman2012:
附件在哪儿呢,亲亲
Ehcache缓存框架 -
zskangs1126:
mysql 基本语句
二级缓存
- EHCache 是一个快速的、轻量级的、易于使用的、进程内的缓存。它支持read-only和read/write缓存,内存和磁盘缓存。但是不支持集群 (Clustering)。
- OSCache 是另外一个开源的缓存方案。它同时还支持JSP页面或任意对象的缓存。OSCache功能强大、灵活,和EHCache一样支持read-only和 read/write缓存、支持内存和磁盘缓存。同时,它还提供通过JGroups或JMS进行集群的基本支持。
- SwarmCache 是一个简单的、基于JavaGroups提供集群的缓存方案。支持read-only和nonstrict read/write缓存。这种缓存适用于读操作远远高于写操作频率的应用。
- JBoss TreeCache 是一个强大的、可复制(同步或异步)和支持事务的缓存。如果你需要一个真正的支持事务的缓存架构,使用这个方案吧。
EHCache 的 使用场合
1
比较少更新表数据
EhCache一般要使用在比较少执行write操作的表(包括update,insert,delete等)[Hibernate的二级缓存也都是这
样];
2 对并发要求不是很严格的情况
两台机子中的缓存是不能实时同步的;
Ehcache
的
类层次模型
主要为三层,最上层的是CacheManager,他是操作Ehcache的入口。我们可以通过CacheManager.getInstance()获 得一个单子的CacheManger,或者通过CacheManger的构造函数创建 一个新的CacheManger。每个CacheManager都管理着多个Cache。而每个Cache都以一种类Hash的方式,关联着多个 Element。Element则是我们用于存放要缓存内容的地方。
Hibernate 的二级缓存策略的一般过程如下
1条件查询的时候,总是发出一条select * from table_name where ....
(选择所有字段)这样的SQL语句查询数据库,一次获得所有的数据对象。
2 把获得的所有数据对象根据ID放入到第二级缓存中。
3
当Hibernate根据ID访问数据对象的时候,首先从Session一级缓存中查;查不到,如果配置了二级缓存,那么从二级缓存中查;查不到,再查询
数据库,把结果按照ID放入到缓存。
4
删除、更新、增加数据的时候,同时更新缓存。
Hibernate的二级缓存策略,是针对于ID查询的缓存策略,对于条件查询则毫无作用。为此,Hibernate提供了针对条件查询的Query
Cache。
没有分布
式缓存需求的配置:
1.先下载ehcache的jar包。
最新版本: ehcache-1.4 released。
解压后,有几个文件:
ehcache-1.4.0.jar:需要将它放置到WEB-INF/lib下
ehcache-1.4.0-remote-debugger.jar:不要发布到工程中,是用来调试和监控你的cache状况的
ehcache-1.4.0-sources.jar:源代码
ehcache.xml :重要的配置文件,需要复制到classpath下
。
2.ehcach.xml配置文件主要参数的解释,其实文件里有详细的英文注释//DiskStore 配置,cache文件的存放目录
,主要的值有
* user.home - 用户主目录
* user.dir - 用户当前的工作目录
*
java.io.tmpdir - Default temp file path默认的temp文件目录
范例
1、首先设置EhCache,建立配置文件ehcache.XML,默认的位置在class-
path,可以放到你的src目录下: |
<?xml version="1.0" encoding="UTF-8"?> <ehcache> <diskStore path="Java.io.tmpdir"/> <defaultCache maxElementsInMemory="10000" <! eternal="false" <! overflowToDisk="true" <! timeToIdleSeconds="300" <! timeToLiveSeconds="180" <! diskPersistent="false" diskExpiryThreadIntervalSeconds= "120"/> </ehcache> |
2、在
Hibernate配置文件中设置:
<!
<property name="cache.provider_class">org.hibernate.cache.EhCacheProvider</property> <! <property name="hibernate.cache.use_query_cache">true</property> |
说明一
下:如果不设置"查询缓存",那么hibernate只会缓存使用load()方法获得的单个持久化对象,如果想缓存使用findall()、
list()、Iterator()、createCriteria()、createQuery()等方法获得的数据结果集的话,就需要设置
hibernate.cache.use_query_cache true才行。
3、在Hbm.xml文件中在
其<set></set>中添加<cache usage="read-only"/>
4、如果需要"查询缓存",还
需要在使用Query或Criteria()时设置其setCacheable(true);属性
5、创建DAO,内容如下:
Session s =
HibernateSessionFactory.getSession(); Criteria c = s.createCriteria(Xyz.class); c.setCacheable(true);//这句必须要有 System.out.println("第一次读取"); List l = c.list(); System.out.println(l.size()); HibernateSessionFactory.closeSession(); s = HibernateSessionFactory.getSession(); c = s.createCriteria(Xyz.class); c.setCacheable(true);//这句必须要有 System.out.println("第二次读取"); l = c.list(); System.out.println(l.size()); HibernateSessionFactory.closeSession(); |
|
6
、这时你会看到打印出来的信息为(表示第二
次并没有去读库):
第一次读取 Hibernate: * * *** 13 第二次读取 13 首页的页面缓存 一 个网站的首页估计是被访问的次数最多的,我们可以考虑给首页做一个页面缓存 缓存策略:我认为应该是某个固定时间之内不变的,比如说2分钟更新一次,以应用结构page-filter-action-service-dao-db 为例。 位置:页面缓存做到尽量靠近客户的地方,就是在page和filter之间 ,这样的优点就是第一个用户请求之后,页面被缓存,第二个用户再来请求的时候,走到filter这个请求就结束了,无需再走后面的action- service-dao-db。带来的好处是服务器压力的减低和客户段页面响应速度的加快。 <cache name="SimplePageCachingFilter" maxElementsInMemory="10" maxElementsOnDisk="10" eternal="false" overflowToDisk="true" diskSpoolBufferSizeMB="20" timeToIdleSeconds="10" timeToLiveSeconds="10"
memoryStoreEvictionPolicy="LFU" /> 接着我们来看一下 SimplePageCachingFilter的配置, <filter> <filter-name>indexCacheFilterfilter-name> <filter-class> net.sf.ehcache.constructs.web.filter.SimplePageCachingFilter filter-class> filter> <filter-mapping> <filter-name>indexCacheFilter<filter-name> <url-pattern>*index.action<url-pattern> filter-mapping> 就只需要这么多步骤,我们就可以给某个页面做一个缓存的,把上面这段配置放到你的web.xml中,那么 当你打开首页的时候,你会发现,2分钟才会有一堆sql语句出现在控制台上。 cachefilter中还有一个特性,就是gzip,也就是 说缓存中的元素是被压缩过的,如果客户浏览器支持压缩的话,filter会直接返回压缩过的流,这样节省了带宽,把解压的工作交给了客户浏览器,如果客户 的浏览器不支持gzip,那么filter会把缓存的元素拿出来解压后再返回给客户浏览器(大多数爬虫是不支持gzip的,所以filter也会解压后再 返回流),这样做的优点是节省带宽,缺点就是增加了客户浏览器的负担。
Ehcache 的三种清空策略 1 FIFO,first in first out,这个是大家最熟的,先进先出。 2 LFU, Less Frequently Used,就是上面例子中使用的策略,直白一点就是讲一直以来最少被使用的。如上面所讲,缓存的元素有一个hit属性,hit值最小的将会被清出缓存。 3 LRU,Least Recently Used,最近最少使用的,缓存的元素有一个时间戳,当缓存容量满了,而又需要腾出地方来缓存新的元素的时候,那么现有缓存元素中时间戳离当前时间最远的 元素将被清出缓存。 |
发表评论
-
web.xml里<filter-mapping>中的<dispatcher>作用
2010-06-19 09:30 1058关键字: xml里<filter-mapping> ... -
Java基本功—Reference
2010-05-25 22:22 940这是一篇一年多之前便已写就的文章,那时,因为很多Java程 ... -
MyEclipse 8.5 开发环境配置,汉化,Aptana2.0插件,SVN 插件,Flex Builder 3/4 插件安装
2010-05-25 11:33 1180MyEclipse 8.5 开发环境配 ... -
根据IE版本不同调用不同CSS样式文件
2010-05-24 22:13 1635在webjx.com的文章中,并不提倡这样的方法,但是依然有很 ... -
java singleton
2010-05-17 17:12 1443Java singleton是指这样的类,它只能实例化一次,s ... -
搭建Android开发环境
2010-05-12 15:15 4239Android的开发现在是如火如荼,逞现在不是很忙了,学习了下 ... -
java中堆(heap)和堆栈(stack)有什么区别 备份
2010-05-12 11:24 989stack 和 heep 都是内存的 ... -
EL表达式
2010-04-20 12:05 1086EL 全名为 Expression Language ... -
解读Tomcat服务器server.xml文件
2010-03-31 13:26 909<Server port="8005&qu ... -
Tomcat
2010-03-31 13:22 821Tomcat启动分析 1 - Tomcat Serve ... -
配置svn的问题
2010-03-02 20:04 1633Unsupported FS formatsvn: 期望文件 ... -
获取雅虎的天气情况
2010-02-24 14:02 1227package lee; import java.io.In ... -
关于解决MyEclipse 的耗内存的办法
2010-01-28 14:48 9131、老是弹出Quick update error 、关闭mye ... -
HashMap和HashTable的区别和不同 转载总结
2010-01-27 17:23 1468Hashtable和HashMap类有三个重要的不同之处。第一 ... -
一堂如何提高代码质量的培训课(3)
2010-01-26 10:36 8093)职责驱动设计和领 ... -
一堂如何提高代码质量的培训课(2)
2010-01-26 10:35 8143.可变更性 前面我提到了,软件的变更性是所有软件理论的 ... -
一堂如何提高代码质量的培训课
2010-01-25 13:21 897今天这堂培训课讲什么呢?我既不讲Spring,也不讲Hiber ...
相关推荐
整理下ehcache知识介绍,供大家了解
主要介绍了Ehcache简介,使用Spring的AOP进行整合,可以灵活的对方法的返回结果对象进行缓存
2. EHCache 简介 Ehcache is a widely used java distributed cache for general purpose caching, Java EE and light-weight containers. It features memory and disk stores, replicate by copy and invalidate, ...
1)Demo 学习要点简介: 1.通过google ehcache-spring-annotatios.jar自动注解方式实现整合Spring+Ehcache。 2.Action里通过struts2-spring-plugin.jar插件自动根据名字注入。 3.Ajax无刷新异步调用Struts2,返回...
对数据缓存技术的一个总结,文档比较全面的阐述了缓存类型,功能特性和相关技术。
配置 EhCache 的实例 1、 简介: EhCache缓存插件是Hibernate的另一个项目,Hibernate框架内置了对它 的支持,对于单机应用推荐使用它做为Hibernate的二级缓存。
项目简介:此项目只是简单的集成spring+springmvc+shiro+ehcahce 二: 步骤说明: 1:项目集成spring 在web.xml中配置spring容器的监听器。 2:项目集成springmvc 在web.xml中配置前端控制器 3:项目集成...
收集的jar包和资料,实际使用无问题,欢迎下载,如不能使用,请及时联系发布者 简介:二级缓存ehcache pom、开启二级缓存和查询缓存配置
Hibernate三级缓存机制简介: 一级缓存 :基于Session级别分配一块缓存空间,缓存访问的对象信息。Session关闭后会自动清除缓存。 二级缓存 :是SessionFactory对象缓存,可以被创建出的多个 Session 对象共享,二...
mayday博客系统,基于springboot、mybatis、ehcache、thymeleaf、bootstrap做的博客系统,完美自适应,支持markdown编辑器.zip 当然可以,以下是一份关于您的Java SpringBoot项目的简介描述: 探索Java的SpringBoot...
OSCache和Ehcache应用介绍,主要对页面缓存、服务器缓存相关应用的介绍
常用功能:会话(session),安全性(rbac权限框架),shiro(rbac权限框架),oauth(第三方登录),logback(日志),log-aop(AOP方式日志),ehcache(ehcache缓存),异常(统一异常处理),Async(异步
开发工具 1.Eclipse IDE:采用Maven项目管理,模块化。 2.代码生成:通过界面方式简单配置...缓存:Redis、ehcache 消息中间件:ActiveMQ 负载均衡:Nginx 分布式文件:FastDFS 数据库连接池:Alibaba Druid 1.0
项目简介 校友录网站。作为毕业设计,为母校设计校友交流平台。基于javaWeb,由Maven构建管理,采用Spring+SpringMVC+MyBatis框架,用EhCache做数据缓存。门户网站采用BootStrap设计界面,后台管理网站用AmazeUI设计...
Context-support模块:提供了对第三方库嵌入Spring应用的集成支持,比如缓存(EhCache、Guava、JCache)、邮件服务(JavaMail)、任务调度(CommonJ、Quartz)和模板引擎(FreeMarker、JasperReports、速率)。 SpEL模块:...
功能简介 1. 用户管理 2. 角色管理 3. 部门管理 4. 菜单管理 5. 字典管理 6. 业务日志 7. 登录日志 8. 监控管理 9. 通知管理 10. 代码生成 所用框架 前端 1. Bootstrap v3.3.6 2. jQuery v2.1.4 3. bootstrap-...
第1章 介绍与安装平台简介 Shopping商城系统是采用Java语言开发的多用户商城系统,使用 Spring+JPA+Velocity+Ehcache作
框架简介 JeeSite是基于多个优秀的开源项目,高度整合封装而成的高效,高性能,强安全性的开源Java开发平台。 本人在开发中,使用了此项目,同时在开发过程中,对项目进行了部分优化修改,感谢原作者. 初始管理员账号:...