`
tangyiss
  • 浏览: 7123 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

mybatis 配置ehcache 验证二级缓存是否起作用

    博客分类:
  • Java
 
阅读更多

 

按照https://my.oschina.net/u/1469930/blog/388004 配置好,但是不知道配置的二级缓存是否起作用;

用不同的浏览器打开同一个链接,调用相同的方法,tomcat容器的session会话不同,但是相同的查询,只像数据库请求了一次SQL.

准备工作:

1.打开mysql的log,windows和linux不一样哈,目的是为了查看请求时,向数据库发了SQL查询没;

windows

[mysqld] 
# [mysqld] 下添加日志在H盘
log-error="H:\mysql_log\error.log"  
log="H:\mysql_log\mysql.log"  
long_query_time=2  
log-slow-queries="H:\mysql_log\slowquery.log" 

 linux

# 在[mysqld]  
#log  
log-error=/usr/local/mysql/log/error.log  
log=/usr/local/mysql/log/mysql.log  
long_query_time=2  
log-slow-queries= /usr/local/mysql/log/slowquery.log 

2.分别在没有配置缓存和配置了缓存的情况下,不同浏览器访问相同链接,代码中打印时间,同时观察mysql的日志变化,linux用tail -f ,windows用监控文本变化的工具,比如UE,notepade++(高版本),wintalk.ext

得出结论

1.在mapper中关闭了2级缓存
	浏览器请求不同的session;点击一次发送一次sql到数据库;SqlSession一致;

2.在mapper中开启了2级缓存
	不同浏览器相同请求,数据库日志只有第一次发出了sql查询,第一次耗时多,以后几乎耗时为0毫秒;

 3.配置:

pom.xml

		<dependency>
			<groupId>net.sf.ehcache</groupId>
			<artifactId>ehcache-core</artifactId>
			<version>2.4.6</version>
		</dependency>
		<dependency>
		    <groupId>org.mybatis.caches</groupId>
		    <artifactId>mybatis-ehcache</artifactId>
		    <version>1.0.1</version>
		</dependency>		
		<dependency>
		    <groupId>org.springframework</groupId>
		    <artifactId>spring-context-support</artifactId>
		    <version>4.2.4.RELEASE</version>
		</dependency>

 ehcache.xml

<?xml version="1.0" encoding="utf-8"?>   
    <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ehcache.xsd">       
    <diskStore path="java.io.tmpdir"/>  
    <defaultCache  maxElementsInMemory="100000" maxElementsOnDisk="300000" eternal="false" timeToIdleSeconds="1800" 
               timeToLiveSeconds="3600" overflowToDisk="true" memoryStoreEvictionPolicy="LFU"/>  
    <!--           
  	  配置自定义缓存          
    	maxElementsInMemory			|	设置基于内存的缓存可存放对象的最大数目  
    	maxElementsOnDisk			|	设置基于硬盘的缓存可存放对象的最大数目
    	eternal					|	如果为true,表示对象永远不会过期,此时会忽略timeToIdleSeconds和timeToLiveSeconds属性,默认为false
    	timeToIdleSeconds			|	设定允许对象处于空闲状态的最长时间,以秒为单位。当对象自从最近一次被访问后,如果处于空闲状态的时间超过了就clear cache,
    									只有当eternal属性为false,该属性才有效。如果该属性值为0,则表示对象可以无限期地处于空闲状态
    	timeToLiveSeconds			|	设定对象允许存在于缓存中的最长时间,以秒为单位。当对象自从被存放到缓存中后,如果处于缓存中的时间超过了 timeToLiveSeconds属性值,
    									这个对象就会过期。当对象过期,EHCache将把它从缓存中清除。只有当eternal属性为false,该属性才有效。如果该属性值为0,
                                                        则表示对象可以无限期地存在于缓存中。timeToLiveSeconds必须大于timeToIdleSeconds属性,才有意义。
    	overflowToDisk				|	如果为true,表示当基于内存的缓存中的对象数目达到了maxElementsInMemory界限后,会把益出的对象写到基于硬盘的缓存中。
    							注意:如果缓存的对象要写入到硬盘中的话,则该对象必须实现了Serializable接口才行。
    	memoryStoreEvictionPolicy	        |	        缓存对象清除策略。有三种:
    										FIFO ,first in first out 
    										 LFU , Less Frequently Used ,缓存的元素有一个hit 属性,hit 值最小的将会被清出缓存,使用得少的就会被清出
    										 LRU ,Least Recently Used ,最近最少使用的,缓存的元素有一个时间戳,当缓存容量满了,而又需要腾出地方来缓
                                                        存新的元素的时候,那么现有缓存元素中时间戳离当前时间最远的元素将被清出缓存。
    -->   
</ehcache>

 **Mapper.xml

	<!-- ehcache缓存 -->
<!-- 	<cache type="org.mybatis.caches.ehcache.EhcacheCache" /> -->
	<cache type="org.mybatis.caches.ehcache.LoggingEhcache">  
	    <property name="timeToIdleSeconds" value="3600"/>
	    <property name="timeToLiveSeconds" value="3600"/>  
	    <property name="maxEntriesLocalHeap" value="1000"/>  
	    <property name="maxEntriesLocalDisk" value="10000"/>  
	    <property name="memoryStoreEvictionPolicy" value="LRU"/>  
	</cache>

 注入spring

	<!-- 使用ehcache缓存 -->    
   <bean id="ehCacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">  
     <property name="configLocation" value="classpath:ehcache.xml" />  
   </bean>

 可以用flushcache() userCache()配合着查看区别。

 

 

 

 

分享到:
评论

相关推荐

    Mybatis入门实例(二)——添加ehcache缓存支持

    在本篇《Mybatis入门实例(二)——添加ehcache缓存支持》中,我们将深入探讨如何在Mybatis框架中集成Ehcache作为二级缓存,以提高数据访问的效率和性能。Ehcache是一个开源的Java分布式缓存,广泛用于缓存应用程序中...

    spring springmvc mybatis shiro 以及 ehcache(配合shiro实现缓存验证 配合spring实现二级缓存)

    spring springmvc mybatis shiro 以及 ehcache(配合shiro实现缓存验证 配合spring实现二级缓存) 测试 二级缓存 访问http://localhost:8080/vkblog/test/ehcacheuserlist.action 测试 访问限制 访问任意的action

    mybatis ehcache 1.0 ehcache.xsd 提示文件

    集成MyBatis和Ehcache时,我们需要在MyBatis的全局配置文件(`mybatis-config.xml`)中指定`ehcache.xml`的位置,并启用二级缓存: ```xml ... &lt;cache type="org.mybatis.cache.ehcache.EhcacheCache"&gt; ...

    Mybatis缓存测试示例

    1. **缓存开启与配置**:确认Mybatis配置文件中是否开启了二级缓存,以及对应的Mapper文件中是否有相应的缓存配置。 2. **缓存读写测试**:编写测试用例,模拟读取和写入操作,验证缓存是否能正确地存储和返回数据...

    mybatis-3.2.7 EHCache2.6.8 oracle 及 测试用例

    在本例中,我们使用 EHCache 作为 MyBatis 的二级缓存实现。 **Oracle** 是一个关系型数据库管理系统,广泛应用于企业级应用中。本文将介绍如何在 Oracle 10g 数据库中使用 MyBatis 和 EHCache 实现数据持久化,并...

    SSM+ehcache-Jar包

    - **mybatis-ehcache-1.0.3.jar**:Mybatis与Ehcache的集成库,让Mybatis可以利用Ehcache进行二级缓存。 - **spring-beans-4.2.5.RELEASE.jar**:Spring框架的核心模块,包含了Bean工厂和依赖注入等功能。 - **shiro...

    mybatis学习文档资料

    - **7.6 二级缓存局限性**:讨论二级缓存可能存在的问题,如并发更新问题等。 #### 六、Spring 和 MyBatis 整合 - **8.1 整合思路**:利用Spring管理MyBatis的生命周期,简化开发流程。 - **8.2 整合环境**:搭建...

    《Java EE企业级应用开发教程Spring+Spring MVC+MyBatis》_源代码.zip

    《Java EE企业级应用开发教程Spring+Spring MVC+MyBatis》是一本深入探讨Java企业级应用程序开发的书籍,源代码包含多个章节的实例,旨在帮助读者理解和掌握使用Spring、Spring MVC和MyBatis框架进行实际开发的关键...

    mybatis学习笔记

    - **开启二级缓存**:配置文件中的设置。 - **实现序列化**:满足二级缓存的要求。 - **测试**:验证缓存的有效性。 - **禁用二级缓存**:特定情况下的关闭方法。 - **刷新缓存**:清理缓存数据。 - **Mybatis...

    springboot整合redis+ecache

    在 SpringBoot 中,需要配置 MyBatis 相关的 Starter,并在 MyBatis 的配置中指定 Redis 或 Ehcache 作为二级缓存。 8. **测试与调试**:编写测试用例,验证缓存功能是否正常工作。你可以检查缓存命中率、存取速度...

    spring-dubbo-service:微服务spring dubbo项目:dubbo rpc;德鲁伊数据源连接池; mybatis配置集成,多数据源; jmx监控MBean;定时任务; aop; ftp;测试;指标监控;参数验证;跨域处理; shiro权限控制; consul服务注册,发现; redis分布式锁; SPI服务机制; cat监控; netty服务代理; websocket; disconf; mongodb集成;休息; docker; fescar

    配置druid数据源监视: ehcache二级缓存配置xml注解ftp服务; Excel相关处理; jmx监控MBean测试; ArchUnit参数验证;跨域处理; shiro权限控制;静态资源,“ /”映射服务启动注册到consul;并测试获取redis服务,...

    J2EE spring mvc mybatis bootstrap HTML5 后台框架 控制台 mysql版本_spring3.0

    23.ehcache 自定义二级缓存 ,选择缓存存放目录,处理并发,增加系统性能 24.服务器内部GET POST 请求 25.uploadify 上传插件,单条、批量上传,带进度条,异步,图片、视频, 其它文件格式均可上传 26.地图选点获取...

    SpringMVC+Nutz框架介绍.pdf

    在缓存层面,Ehcache作为Shiro的一级缓存,而Jedis则用于Redis的二级缓存。Dubbo和RSF用于实现服务的分布式,RabbitMQ处理消息队列,Quartz实现定时任务,Elasticsearch用于全文搜索引擎,FastDFS支持文件存储,这些...

    分布式框架简介SSM组合+ springmvc+mybatis+shiro+restful+bootstrap

    - **缓存**: Redis(高性能的key-value存储系统)、ehcache(Java平台上的缓存实现)。 - **消息中间件**: ActiveMQ(基于AMQP协议的消息中间件)。 - **负载均衡**: Nginx(高效反向代理服务器)。 - **分布式...

    06.2、框架—其他(12题)1

    - 二级缓存:作用于SessionFactory级别,可供多个Session共享。需手动开启,默认使用EhCache实现。二级缓存中数据的修改需要同步到数据库,避免并发问题。 4. Hibernate的懒加载(Lazy Loading): 懒加载是一种...

    6.2、框架—其他(12题)1

    - **二级缓存**:作用于SessionFactory范围,可被所有Session共享。默认关闭,需手动开启,通常使用ehcache实现。需要注意数据的并发修改问题。 - **懒加载**:延迟加载策略,只有在实际需要时才查询数据库,提高...

    SSM框架+shiro+ecache整合

    在SSM项目中,Ehcache可能被用作二级缓存,存储一些频繁访问的数据,如查询结果,以减轻数据库压力。 这个"SSM框架+shiro+ecache整合"项目提供了一个完整的解决方案,适用于需要进行复杂业务逻辑处理和高安全性需求...

    SpringMVC+Nutz框架介绍.docx

    权限管理方面,框架基于Shiro进行了深度定制,实现了Ehcache的一级缓存和Redis的二级缓存,支持session同步。权限控制深入到按钮和方法级别,且有三套独立的验证体系,分别对应平台、商家和会员,便于权限的分级管理...

    springboot-shiro

    6. 缓存管理:Shiro支持Redis、Ehcache等多种缓存机制,通过`CacheManager`接口实现缓存的配置,提高性能。 7. Mybatis-Generator整合:配置generator-config.xml,指定数据库连接信息、生成的Java文件位置等,然后...

Global site tag (gtag.js) - Google Analytics