springMVC集成緩存框架Ehcache


概述

Ehcache算是當前比較流行的緩存框架,使用緩存可以極大的緩解服務器和數據庫的壓力,提高訪問效率,提高服務器的並發能力。接下來我們看怎么把緩存在spring mvc種使用起來。

詳細

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.jar

jar包下載地址http://download.csdn.NET/detail/qq_33556185/9550460

將jar包放到項目里之后,我們看怎么集成它。

先看看項目代碼截圖:

image.png

(一)配置ehcahce.xml

updateCheck="false" 不檢查更新當前使用的Ehcache的版本

eternal:緩存中對象是否為永久的,如果是,超時設置將被忽略,對象從不過期。

maxElementsInMemory:緩存中允許創建的最大對象數

overflowToDisk:內存不足時,是否啟用磁盤緩存。

timeToIdleSeconds:緩存數據的鈍化時間,也就是在一個元素消亡之前,

兩次訪問時間的最大時間間隔值,這只能在元素不是永久駐留時有效,

如果該值是 0 就意味着元素可以停頓無窮長的時間。

timeToLiveSeconds:緩存數據的生存時間,也就是一個元素從構建到消亡的最大時間間隔值,

這只能在元素不是永久駐留時有效,如果該值是0就意味着元素可以停頓無窮長的時間。

memoryStoreEvictionPolicy:緩存滿了之后的淘汰算法。

1 FIFO,先進先出

2 LFU,最少被使用,緩存的元素有一個hit屬性,hit值最小的將會被清出緩存。

3 LRU,最近最少使用的,緩存的元素有一個時間戳,當緩存容量滿了,而又需要騰出地方來緩存新的元素的時候,那么現有緩存元素中時間戳離當前時間最遠的元素將被清出緩存。

<?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">   
<!—默認緩存--!>  
    <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/cache

http://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

@Cacheable(value="myCache",key="#userName")   
@Override  
public List<Permission>findPermissionByName(String userName) {  
   System.out.println("查數據庫了===========");  
   return permissionRepository.findPermissionByName(userName);

(四)使用@CachePut注解來更新緩存

當緩存中的對象被修改的時候,修改的方法使用該注解,緩存管理器會根據key找到被修改的對象,然后去修改緩存中的對象

@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)

(六)運行起來

項目帶有DB腳步,在resource目錄下的table.sql文件。先建立DB,使用的是mysql數據庫5.6。

建立DB后,則需要配置連接db。

配置resource下的jdbc.properties文件。

image.png

 

然后運行該項目,如下圖示:

image.png

點擊紅色框住的超鏈接,可以看到不同的ehcache操作。

 

 

注:本文著作權歸作者,由demo大師發表,拒絕轉載,轉載需要作者授權

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM