1. 程式人生 > >配置ehCache快取策略@Cacheable,@CacheEvict,@CachePut

配置ehCache快取策略@Cacheable,@CacheEvict,@CachePut

ehCache

ehcache.xml解析

<defaultCache
maxElementsInMemory="10000"
eternal="false"
overflowToDisk="true"
timeToIdleSeconds="10"
timeToLiveSeconds="120"
diskPersistent="false"
memoryStoreEvictionPolicy="LRU"
diskExpiryThreadIntervalSeconds="120"/>

    <!-- maxElementsInMemory 記憶體中最大快取物件數,看著自己的heap大小來設定 --
> <!-- eternal:true表示物件永不過期,此時會忽略timeToIdleSeconds和timeToLiveSeconds屬性,預設為false --> <!-- overflowToDisk:true表示當記憶體快取的物件數目達到了maxElementsInMemory界限後, 會把溢位的物件寫到硬碟快取中。注意:如果快取的物件要寫入到硬碟中的話,則該物件必須實現了Serializable接口才行。--> <!-- maxElementsOnDisk:硬碟中最大快取物件數,若是0表示無窮大 --> <
!-- diskSpoolBufferSizeMB:磁碟快取區大小,預設為30MB。每個Cache都應該有自己的一個快取區。--> <!-- diskPersistent:是否快取虛擬機器重啟期資料 --> <!-- diskExpiryThreadIntervalSeconds:磁碟失效執行緒執行時間間隔,預設為120--> <!-- timeToIdleSeconds: 設定允許物件處於空閒狀態的最長時間,以秒為單位。當物件自從最近一次被訪問後, 如果處於空閒狀態的時間超過了timeToIdleSeconds屬性值,這個物件就會過期, EHCache將把它從快取中清空。只有當eternal屬性為false
,該屬性才有效。如果該屬性值為0, 則表示物件可以無限期地處於空閒狀態 --> <!-- timeToLiveSeconds:設定物件允許存在於快取中的最長時間,以秒為單位。當物件自從被存放到快取中後, 如果處於快取中的時間超過了 timeToLiveSeconds屬性值,這個物件就會過期, EHCache將把它從快取中清除。只有當eternal屬性為false,該屬性才有效。如果該屬性值為0, 則表示物件可以無限期地存在於快取中。timeToLiveSeconds必須大於timeToIdleSeconds屬性,才有意義 --> <!-- memoryStoreEvictionPolicy:當達到maxElementsInMemory限制時, Ehcache將會根據指定的策略去清理記憶體。可選策略有:LRU(最近最少使用,預設策略)、 FIFO(先進先出)、LFU(最少訪問次數)。-->

註解引數

//	使用哪個ehcache的name
    @AliasFor("cacheNames")
    String[] value() default {};
//   配置多個value
    @AliasFor("value")
    String[] cacheNames() default {};
// {非重要}設定value的key值  直接使用“#引數名”
    String key() default "";
//{非必要}指定key生成器   實現org.springframework.cache.interceptor.KeyGenerator介面
    String keyGenerator() default "";
// {非重要}指定使用哪個快取管理器 
    String cacheManager() default "";
//{非重要}指定使用那個快取解析器 通過org.springframework.cache.interceptor.CacheResolver介面
    String cacheResolver() default "";
//對引數做判斷 
    String condition() default "";
// 不同於condition,對結果集做判斷
    String unless() default "";
// 是否加鎖
    boolean sync() default false;

[email protected]

作用:在查詢時,會先從快取中獲取,若不存在才再發起對資料庫的訪問。

[email protected]

作用:通常用在刪除方法,用來從快取中移除相應資料

[email protected]

作用:用於資料新增和修改操作上,用於更新快取。