Springmvc +Ehcache 缓存介绍
2018-03-09 14:08
411 查看
Ehcache算是当前比较流行的缓存框架,使用缓存可以极大的缓解服务器和数据库的压力,提高访问效率,提高服务器的并发能力。接下来我们看怎么把缓存使用起来。
SpringMVC集成Ehcache所需的jar包:包括ehcache-core-2.4.3.jar、ehcache-web-2.0.4.jar、guava-15.0.jar、slf4j-api-1.7.12.jar、commons-logging.jarjar包下载地址http://download.csdn.net/detail/qq_33556185/9550460将jar包放到项目里之后,我们看怎么集成它(一)配置ehcahce.xml
updateCheck="false" 不检查更新当前使用的Ehcache的版本 eternal:缓存中对象是否为永久的,如果是,超时设置将被忽略,对象从不过期。 maxElementsInMemory:缓存中允许创建的最大对象数 overflowToDisk:内存不足时,是否启用磁盘缓存。 timeToIdleSeconds:缓存数据的钝化时间,也就是在一个元素消亡之前, 两次访问时间的最大时间间隔值,这只能在元素不是永久驻留时有效, 如果该值是 0 就意味着元素可以停顿无穷长的时间。 timeToLiveSeconds:缓存数据的生存时间,也就是一个元素从构建到消亡的最大时间间隔值, 这只能在元素不是永久驻留时有效,如果该值是0就意味着元素可以停顿无穷长的时间。 memoryStoreEvictionPolicy:缓存满了之后的淘汰算法。 1 FIFO,先进先出 2 LFU,最少被使用,缓存的元素有一个hit属性,hit值最小的将会被清出缓存。 3 LRU,最近最少使用的,缓存的元素有一个时间戳,当缓存容量满了,而又需要腾出地方来缓存新的元素的时候,那么现有缓存元素中时间戳离当前时间最远的元素将被清出缓存。[html] view plain copy<?xml version="1.0"encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd" updateCheck="false">
<!—默认缓存--!<
11c8b
span class="tag" style="margin:0px;padding:0px;font-weight:700;color:rgb(153,51,0);border:none;background-color:inherit;">>
<defaultCache eternal="false"
maxElementsInMemory="10000"
overflowToDisk="false"
timeToIdleSeconds="0"
timeToLiveSeconds="0"
memoryStoreEvictionPolicy="LFU"/>
<!—自定义缓存--!>
<cache name="myCache"
eternal="false"
maxElementsInMemory="10000"
overflowToDisk="false"
timeToIdleSeconds="0"
timeToLiveSeconds="0"
memoryStoreEvictionPolicy="LFU"/>
</ehcache>
(二)配置spring-common文件
导入命名空间xmlns:cache="http://www.springframework.org/schema/cache"http://www.springframework.org/schema/cachehttp://www.springframework.org/schema/cache/spring-cache-4.1.xsd具体配置如下:启用缓存注解功能<cache:annotation-drivencache-manager="cacheManager"/> 缓存管理器工厂加载ehcache的配置 <bean id="cacheManagerFactory" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"> <property name="configLocation"value="classpath:ehcache.xml"/> </bean> 声明缓存管理器 <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager"> <property name="cacheManager"ref="cacheManagerFactory"/> </bean>到此环境已经搭建完成了。接下来我们看怎么使用(三)使用@Cacheable注解来缓存数据当缓存中没有该对象的时候,当然要从数据库里面访问了,从数据库查出来之后,缓存管理器会将此对象放到缓存中,下一次访问的时候,只要该对象没有消亡,则会从缓存里去取,不会再去查数据库value为我们自定义缓存的name,key的属性是缓存的key[java] view plain copy@Cacheable(value="myCache",key="#userName")
@Override
public List<Permission>findPermissionByName(String userName) {
System.out.println("查数据库了===========");
return permissionRepository.findPermissionByName(userName);
(四)使用@CachePut注解来更新缓存当缓存中的对象被修改的时候,修改的方法使用该注解,缓存管理器会根据key找到被修改的对象,然后去修改缓存中的对象[java] view plain copy@CachePut(value="myCache",key="#userId")//更新myCache 缓存
@Override
public void savePermission(Permissionpermission) {
permissionRepository.savePermission(permission);
}
(五)使用@CacheEvict注解来清除缓存当对象被删除的时候,我们需要去清除缓存里面存在的该对象,若不清除,数据库里已经删除,可是缓存里还在,查询的时候,该对象还是会查出来。清除掉指定key的缓存 @CacheEvict(value="myCache",key="#userName") 清除掉全部缓存 @CacheEvict(value="myCache",allEntries=true)
SpringMVC集成Ehcache所需的jar包:包括ehcache-core-2.4.3.jar、ehcache-web-2.0.4.jar、guava-15.0.jar、slf4j-api-1.7.12.jar、commons-logging.jarjar包下载地址http://download.csdn.net/detail/qq_33556185/9550460将jar包放到项目里之后,我们看怎么集成它(一)配置ehcahce.xml
updateCheck="false" 不检查更新当前使用的Ehcache的版本 eternal:缓存中对象是否为永久的,如果是,超时设置将被忽略,对象从不过期。 maxElementsInMemory:缓存中允许创建的最大对象数 overflowToDisk:内存不足时,是否启用磁盘缓存。 timeToIdleSeconds:缓存数据的钝化时间,也就是在一个元素消亡之前, 两次访问时间的最大时间间隔值,这只能在元素不是永久驻留时有效, 如果该值是 0 就意味着元素可以停顿无穷长的时间。 timeToLiveSeconds:缓存数据的生存时间,也就是一个元素从构建到消亡的最大时间间隔值, 这只能在元素不是永久驻留时有效,如果该值是0就意味着元素可以停顿无穷长的时间。 memoryStoreEvictionPolicy:缓存满了之后的淘汰算法。 1 FIFO,先进先出 2 LFU,最少被使用,缓存的元素有一个hit属性,hit值最小的将会被清出缓存。 3 LRU,最近最少使用的,缓存的元素有一个时间戳,当缓存容量满了,而又需要腾出地方来缓存新的元素的时候,那么现有缓存元素中时间戳离当前时间最远的元素将被清出缓存。[html] view plain copy<?xml version="1.0"encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd" updateCheck="false">
<!—默认缓存--!<
11c8b
span class="tag" style="margin:0px;padding:0px;font-weight:700;color:rgb(153,51,0);border:none;background-color:inherit;">>
<defaultCache eternal="false"
maxElementsInMemory="10000"
overflowToDisk="false"
timeToIdleSeconds="0"
timeToLiveSeconds="0"
memoryStoreEvictionPolicy="LFU"/>
<!—自定义缓存--!>
<cache name="myCache"
eternal="false"
maxElementsInMemory="10000"
overflowToDisk="false"
timeToIdleSeconds="0"
timeToLiveSeconds="0"
memoryStoreEvictionPolicy="LFU"/>
</ehcache>
(二)配置spring-common文件
导入命名空间xmlns:cache="http://www.springframework.org/schema/cache"http://www.springframework.org/schema/cachehttp://www.springframework.org/schema/cache/spring-cache-4.1.xsd具体配置如下:启用缓存注解功能<cache:annotation-drivencache-manager="cacheManager"/> 缓存管理器工厂加载ehcache的配置 <bean id="cacheManagerFactory" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"> <property name="configLocation"value="classpath:ehcache.xml"/> </bean> 声明缓存管理器 <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager"> <property name="cacheManager"ref="cacheManagerFactory"/> </bean>到此环境已经搭建完成了。接下来我们看怎么使用(三)使用@Cacheable注解来缓存数据当缓存中没有该对象的时候,当然要从数据库里面访问了,从数据库查出来之后,缓存管理器会将此对象放到缓存中,下一次访问的时候,只要该对象没有消亡,则会从缓存里去取,不会再去查数据库value为我们自定义缓存的name,key的属性是缓存的key[java] view plain copy@Cacheable(value="myCache",key="#userName")
@Override
public List<Permission>findPermissionByName(String userName) {
System.out.println("查数据库了===========");
return permissionRepository.findPermissionByName(userName);
(四)使用@CachePut注解来更新缓存当缓存中的对象被修改的时候,修改的方法使用该注解,缓存管理器会根据key找到被修改的对象,然后去修改缓存中的对象[java] view plain copy@CachePut(value="myCache",key="#userId")//更新myCache 缓存
@Override
public void savePermission(Permissionpermission) {
permissionRepository.savePermission(permission);
}
(五)使用@CacheEvict注解来清除缓存当对象被删除的时候,我们需要去清除缓存里面存在的该对象,若不清除,数据库里已经删除,可是缓存里还在,查询的时候,该对象还是会查出来。清除掉指定key的缓存 @CacheEvict(value="myCache",key="#userName") 清除掉全部缓存 @CacheEvict(value="myCache",allEntries=true)
相关文章推荐
- dubbo + springmvc + mybatis + ehcache + redis 技术介绍
- spring整合ehcache 注解实现查询缓存,并实现实时缓存更新或删除 写在前面:上一篇博客写了spring cache和ehcache的基本介绍,个人建议先把这些最基本的知识了解了才能对今天
- SpringMVC + Mybatis + Shiro + ehcache时缓存管理器报错。
- Spring Data JPA 缓存结合Ehcache介绍
- springMVC+mybatis+ehcache缓存配置实践
- SpringMVC+mybatis+maven+Ehcache缓存实现
- SpringMVC mybatis or hibernate ehcache二级缓存maven非和maven版本
- j2ee分布式架构 dubbo + springmvc + mybatis + ehcache + redis 技术介绍
- spring mvc+mybatis ehcache缓存配置
- java缓存EHCache Spring MVC项目配置ehcache
- SpringMVC mybatis or hibernate ehcache二级缓存maven非和maven版本
- J2ee分布式架构 dubbo + springmvc + mybatis + ehcache + redis 技术介绍
- j2ee分布式架构 dubbo + springmvc + mybatis + ehcache + redis 技术介绍
- SpringMVC mybatis or hibernate ehcache二级缓存maven非和maven版本
- SpringMVC + Mybatis + Shiro + ehcache时缓存管理器报错。
- dubbo + springmvc + mybatis + ehcache + redis 技术介绍
- spring+springMVC+JPA配置详解(使用缓存框架ehcache)
- Spring+EhCache缓存实例(具体解说+源代码下载)
- springmvc + mybatis + ehcache + redis 分布式架构
- springboot+EHcache 实现文章浏览量的缓存和超时更新