`
498320858
  • 浏览: 393068 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

ehcache缓存使用策略

阅读更多

在同一台电脑中使用数据库和应用程序的时候,不使用缓存的情况下数据读取速度更快(无论是第一次读取还是第二次读取)

测试案例:

1:使用缓存

@Test
	public void testHibernate(){
		AdminDAO ad=new AdminDAO();
		Session s=ad.getSession();
		try{
			String queryString="from Admin";
			Query queryObject = s.createQuery(queryString);
			queryObject.setCacheable(true);
			System.out.println("第一次读取");
		
			List l=queryObject.list();
			System.out.println(l.size());
			s.close();
			s=ad.getSession();
			Long time1=System.currentTimeMillis();
			Query q=s.createQuery("from Admin where id>"+9000);
			q.setCacheable(true);
			List l3=q.list();			
			Long time2=System.currentTimeMillis();
			System.out.println(l3.size());
			s.close();
			System.out.println((time2-time1)+"ms");
			s=ad.getSession();
			time1=System.currentTimeMillis();
			q=s.createQuery("from Admin where id>"+9000);
			q.setCacheable(true);
			l3=q.list();	
			time2=System.currentTimeMillis();
			System.out.println(l3.size());
			s.close();
			System.out.println((time2-time1)+"ms");
		}catch(Exception e){
			e.printStackTrace();
		}
	}

 输出结果:

第一次读取
2010-11-30  DEBUG org.hibernate.SQL  - select admin0_.id as id0_, admin0_.username as username0_, admin0_.password as password0_ from mdg.admin admin0_
Hibernate: select admin0_.id as id0_, admin0_.username as username0_, admin0_.password as password0_ from mdg.admin admin0_
9999
2010-11-30  DEBUG org.hibernate.SQL  - select admin0_.id as id0_, admin0_.username as username0_, admin0_.password as password0_ from mdg.admin admin0_ where admin0_.id>9000
Hibernate: select admin0_.id as id0_, admin0_.username as username0_, admin0_.password as password0_ from mdg.admin admin0_ where admin0_.id>9000
1000
15ms
1000
31ms

 

 

2:不使用缓存:

@Test
	public void testHibernate(){
		AdminDAO ad=new AdminDAO();
		Session s=ad.getSession();
//		Transaction ts=s.beginTransaction();
		try{
			String queryString="from Admin";
			Query queryObject = s.createQuery(queryString);
//			queryObject.setCacheable(true);
			System.out.println("第一次读取");
			
			List l=queryObject.list();
			System.out.println(l.size());
			s.close();	

   		  s=ad.getSession();
			Long time1=System.currentTimeMillis();
			Query q=s.createQuery("from Admin where id>"+9000);
//			q.setCacheable(true);
			List l3=q.list();			
			Long time2=System.currentTimeMillis();
			System.out.println(l3.size());
			s.close();
			System.out.println((time2-time1)+"ms");
			s=ad.getSession();
			time1=System.currentTimeMillis();
			q=s.createQuery("from Admin where id>"+9000);
//			q.setCacheable(true);
			l3=q.list();	
			time2=System.currentTimeMillis();
			System.out.println(l3.size());
			s.close();
			System.out.println((time2-time1)+"ms");
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	

 

输出结果:

第一次读取
2010-11-30  DEBUG org.hibernate.SQL  - select admin0_.id as id0_, admin0_.username as username0_, admin0_.password as password0_ from mdg.admin admin0_
Hibernate: select admin0_.id as id0_, admin0_.username as username0_, admin0_.password as password0_ from mdg.admin admin0_
9999
2010-11-30  DEBUG org.hibernate.SQL  - select admin0_.id as id0_, admin0_.username as username0_, admin0_.password as password0_ from mdg.admin admin0_ where admin0_.id>9000
Hibernate: select admin0_.id as id0_, admin0_.username as username0_, admin0_.password as password0_ from mdg.admin admin0_ where admin0_.id>9000
1000
15ms
2010-11-30  DEBUG org.hibernate.SQL  - select admin0_.id as id0_, admin0_.username as username0_, admin0_.password as password0_ from mdg.admin admin0_ where admin0_.id>9000
Hibernate: select admin0_.id as id0_, admin0_.username as username0_, admin0_.password as password0_ from mdg.admin admin0_ where admin0_.id>9000
1000
16ms

 

 

从控制台的打印结果来看,没有使用缓存的情况下,读取速度更快!

建议:如果数据库和java应用在同一台服务器上时候不要用ehcache缓存

 

以上测试环境:mysql5+hibernate3+ehcache

 

 

分享到:
评论

相关推荐

    cache/ehcache缓存使用

    本文将详细讲解"cache/ehcache缓存使用"的相关知识点,包括缓存的基本概念、Ehcache的介绍、以及如何在Java应用中使用Ehcache进行缓存操作。 首先,我们要理解什么是缓存。缓存是一种存储技术,它临时存储常用或...

    EHCache缓存技术介绍

    EHCache是一种广泛使用的开源Java缓存框架,它支持多种缓存策略,适用于各种应用场景。 在数据持久层,特别是与Hibernate结合使用时,缓存扮演着关键角色。Hibernate的缓存主要分为一级缓存和二级缓存。一级缓存,...

    Ehcache缓存

    **Ehcache缓存** Ehcache是一种广泛使用的开源Java分布式缓存系统,它为高性能应用程序提供了内存存储和缓存解决方案。在Java世界中,尤其是在持久化框架如Hibernate的使用中,Ehcache扮演了至关重要的角色。由于...

    Ehcache分布式缓存与其在SpringBoot应用

    Ehcache的主要优势在于它的快速响应、易用性和丰富的缓存策略。它提供了两种级别的缓存存储:内存和磁盘,这使得即使在内存容量有限的情况下,也能有效地存储大量数据。此外,Ehcache还具备在虚拟机重启后自动将缓存...

    Spring Boot的EhCache缓存使用.docx

    EhCache的配置可以根据实际需求进行调整,比如设置缓存过期时间、大小限制、缓存策略等。同时,EhCache还支持与其他缓存相关的特性,如二级缓存、分布式缓存等,可以进一步提高系统的性能和可扩展性。

    ehcache缓存配置详解

    Ehcache 的配置主要包括 diskstore、defaultCache、cache 三个部分,这三个部分的配置将决定 ehcache 的缓存策略和性能。 一、diskStore 配置 diskStore 配置用于设置缓存文件的创建路径。如果该路径是 Java 系统...

    mybatis添加ehcache缓存支持

    为了提高性能和减少对数据库的直接访问,MyBatis 提供了缓存功能,而Ehcache 是一个广泛使用的开源Java缓存库,可以集成到MyBatis 中以实现高效的缓存管理。 在MyBatis 中添加Ehcache 缓存支持,首先需要确保项目...

    EHcache 缓存使用 手动存储 配置到SSH

    **正文** 在IT行业中,缓存技术是一种非常重要的性能优化手段,它能够减少数据库的访问压力,提高系统响应速度。...记住,缓存并非总是答案,合理的缓存策略应结合业务需求和系统负载进行设计,以达到最佳效果。

    ehcache 缓存

    **三、Ehcache缓存策略** 1. **缓存淘汰策略**: 当缓存达到预设的最大大小时,Ehcache可以采用LRU(最近最少使用)、LFU(最不经常使用)等策略来决定哪些元素应该被淘汰。 2. **过期策略**: 可以设置元素的存活...

    EHcache缓存框架

    4. **缓存策略**:包括LRU(Least Recently Used,最近最少使用)、LFU(Least Frequently Used,最不经常使用)和FIFO(First In First Out,先进先出)等,用于决定何时从缓存中移除元素。 5. **缓存加载策略**:...

    javaWeb中Ehcache缓存配置说明

    本文将深入解析Ehcache缓存配置的关键知识点,帮助你更好地掌握如何在JavaWeb项目中使用Ehcache。 #### Ehcache基本概念与工作原理 Ehcache支持多种缓存策略,包括但不限于L1(一级缓存)、L2(二级缓存)等。在...

    ehcache项目缓存技术

    **正文** Ehcache是Java平台上的一个开源、高性能的分布式缓存系统,它在处理大量用户访问主页或频繁...在实际项目中,根据业务需求选择合适的缓存策略和配置,可以最大化发挥Ehcache的优势,提升用户的使用体验。

    Spring 与Ehcache实现基于方法的缓存

    然后,需要配置Ehcache,创建一个`ehcache.xml`配置文件,定义缓存策略,如缓存的大小、过期时间等。例如: ```xml ``` 这里定义了一个名为`myCache`的缓存,最大内存元素为1000个,非永久存储,闲置120秒后...

    ehcache缓存的jar包和配置文件

    Ehcache提供内存和磁盘存储,可以设置不同的缓存策略。 - 缓存管理器(Cache Manager):它是Ehcache的核心,负责创建和管理多个缓存。 - 缓存(Cache):每个缓存都有一个唯一的名称,用于存储键值对。键必须是...

    Java流行ehcache缓存

    - **类层次模型**:Ehcache的缓存管理基于层次结构,每个层级都可以有自己的缓存策略。 - **缓存对象**:使用`<cache>`元素定义具体的缓存对象,如网页、数据段等。 - **缓存操作**:通过`put()`、`get()`、`...

    ehcache缓存依赖的jar

    使用Ehcache时,首先需要创建一个配置文件(通常是`ehcache.xml`),在这个文件中定义缓存的属性,如大小、过期时间、缓存策略等。然后在代码中初始化Ehcache实例,并通过API进行缓存操作,如存取数据、移除数据或...

    springboot整合Ehcache组件,轻量级缓存管理

    快速,简单,并且提供多种缓存策略; 缓存数据有两级:内存和磁盘,无需担心容量问题; 缓存数据会在虚拟机重启的过程中写入磁盘; 可以通过RMI、可插入API等方式进行分布式缓存; 具有缓存和缓存管理器的侦听接口;...

    Hibernate中二级缓存ehcache缓存案例

    3. **配置ehcache.xml**:创建一个ehcache.xml文件,定义缓存策略。例如,你可以为特定实体类设置缓存策略,包括缓存大小、存活时间和过期时间等。 ```xml <timeToIdleSeconds>600 <timeToLiveSeconds>1200 ...

    springboot2使用ehcache缓存

    本文将深入探讨如何在Spring Boot项目中集成并使用Ehcache进行数据缓存。 首先,Ehcache是由Talend公司维护的一个开源缓存库,它支持内存和磁盘存储,具有丰富的API和特性,包括缓存分区、过期策略、缓存预热等。在...

    Spring Boot 2.x基础教程:使用EhCache缓存集群.docx

    为了解决这个问题,我们需要配置EhCache缓存集群,以确保数据更新能在各个进程中同步。以下是如何使用EhCache实现缓存集群的详细步骤: 首先,确保缓存对象是可序列化的。在上述例子中,`User`实体需要实现`...

Global site tag (gtag.js) - Google Analytics