spring boot 的支持ehcache

1 :添加依賴:

//緩存:

? ?<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>? ?spring-boot-starter-cache?</artifactId>

</dependency>

? <dependency>

<groupId>net.sf.ehcache</groupId>

<artifactId>? ?ehcache</artifactId>

? <version>2.9.0</version>

</dependency>



2 配置 ehCache.xml(一般放在resource根目錄下):

? ? <?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">

<!--這是默認(rèn)的Cache,沒(méi)有對(duì)應(yīng)的字段啟動(dòng)默認(rèn)的-->

<defaultCache

? ? ? ? eternal="false"

? ? ? ? maxElementsInMemory="1000"

? ? ? ? overflowToDisk="false"

? ? ? ? diskPersistent="false"

? ? ? ? timeToIdleSeconds="0"

? ? ? ? timeToLiveSeconds="600"

? ? ? ? memoryStoreEvictionPolicy="LRU"/>


<!--這里的 users 緩存空間是為了下面的 demo 做準(zhǔn)備-->? ?

?<cache? ? name="userinfo"

? ? ? ? eternal="false"

? ? ? ? maxElementsInMemory="100"

? ? ? ? overflowToDisk="false"

? ? ? ? diskPersistent="false"

? ? ? ? timeToIdleSeconds="0"

? ? ? ? timeToLiveSeconds="3000"

? ? ? ? memoryStoreEvictionPolicy="LRU" />

</ehcache>

下面是對(duì)ehcache的屬性進(jìn)行解讀:



diskStore:為緩存路徑缚忧,

ehcache分為內(nèi)存和磁盤兩級(jí)悟泵,此屬性定義磁盤的緩存位置。

defaultCache:默認(rèn)緩存策略闪水,當(dāng)ehcache找不到定義的緩存時(shí)糕非,則使用這個(gè)緩存策略。只能定義一個(gè)。name:緩存名稱朽肥。maxElementsInMemory:緩存最大數(shù)目

maxElementsOnDisk:硬盤最大緩存?zhèn)€數(shù)禁筏。

eternal:對(duì)象是否永久有效,一但設(shè)置了衡招,timeout將不起作用篱昔。

overflowToDisk:是否保存到磁盤,

當(dāng)系統(tǒng)當(dāng)機(jī)時(shí)timeToIdleSeconds:設(shè)置對(duì)象在失效前的允許閑置時(shí)間(單位:秒)始腾。僅當(dāng)eternal=false對(duì)象不是永久有效時(shí)使用旱爆,可選屬性,默認(rèn)值是0窘茁,也就是可閑置時(shí)間無(wú)窮大怀伦。

timeToLiveSeconds:設(shè)置對(duì)象在失效前允許存活時(shí)間(單位:秒)。最大時(shí)間介于創(chuàng)建時(shí)間和失效時(shí)間之間山林。僅當(dāng)eternal=false對(duì)象不是永久有效時(shí)使用房待,默認(rèn)是0.,也就是對(duì)象存活時(shí)間無(wú)窮大驼抹。

diskPersistent:是否緩存虛擬機(jī)重啟期數(shù)據(jù)Whether the disk store persists between restarts of the Virtual Machine. The default value is false.

diskSpoolBufferSizeMB:這個(gè)參數(shù)設(shè)置DiskStore(磁盤緩存)的緩存區(qū)大小桑孩。默認(rèn)是30MB。每個(gè)Cache都應(yīng)該有自己的一個(gè)緩沖區(qū)框冀。diskExpiryThreadIntervalSeconds:磁盤失效線程運(yùn)行時(shí)間間隔流椒,默認(rèn)是120秒。

memoryStoreEvictionPolicy:當(dāng)達(dá)到maxElementsInMemory限制時(shí)明也,Ehcache將會(huì)根據(jù)指定的策略去清理內(nèi)存宣虾。

默認(rèn)策略是LRU(最近最少使用)。你可以設(shè)置為FIFO(先進(jìn)先出)或是LFU(較少使用)温数。?

clearOnFlush:內(nèi)存數(shù)量最大時(shí)是否清除绣硝。? memoryStoreEvictionPolicy:可選策略有:

????LRU(最近最少使用,默認(rèn)策略)撑刺、

????FIFO(先進(jìn)先出)鹉胖、

????LFU(最少訪問(wèn)次數(shù))。? ??

? ?FIFO够傍,first in first out甫菠,這個(gè)是大家最熟的,先進(jìn)先出冕屯。?

?? LFU寂诱, Less Frequently Used,一直以來(lái)最少被使用的愕撰。如上面所講刹衫,緩存的元素有一個(gè)hit屬性,hit值最小的將會(huì)被清出緩存搞挣。? ??

? ?LRU带迟,Least Recently Used,最近最少使用的囱桨,緩存的元素有一個(gè)時(shí)間戳仓犬,當(dāng)緩存容量滿了,而又需要騰出地方來(lái)緩存新的元素的時(shí)候舍肠,那么現(xiàn)有緩存元素中時(shí)間戳離當(dāng)前時(shí)間最遠(yuǎn)的元素將被清出緩存搀继。


3 啟動(dòng) 緩存

@Configuration

@EnableCaching

public class CacheConfig {

????@Bean

????public EhCacheCacheManagercacheCacheManager(net.sf.ehcache.CacheManager ehCacheManager){

????return? new EhCacheCacheManager(ehCacheManager);

}

????@Bean

????public EhCacheManagerFactoryBeanehCacheCacheManagerFactoryBean(){

????????//注入ehCacheMangerFactorybean

? ????? EhCacheManagerFactoryBean ehCacheManagerFactoryBean =new EhCacheManagerFactoryBean();

? ? ????ehCacheManagerFactoryBean.setConfigLocation(new ClassPathResource("ehCache"));//設(shè)置eh.xml配置文件的地址一般放在resoures根目錄下

? ????? return ehCacheManagerFactoryBean;

????}

}

也可以去配置:application.properties;同時(shí)啟動(dòng)類添加@EnableCaching注釋

#配置cache

spring.cache.cache-names=userinfo

spring.cache.type=ehcache

#spring.cache.ehcache.config=/ehCache.xml

spring.cache.ehcache.config=classpath:/ehCache.xml

#spring.cache.type=#緩存的技術(shù)類型

#spring.cache.cache-names=應(yīng)用程序啟動(dòng)創(chuàng)建緩存的名稱

#spring.cache.ehcache.config=ehcache的配置文件位置


4:可以將一下注解放到方法或者類上

????@cacheable(找到則不調(diào)用方法)翠语;

????@Cacheput(都會(huì)調(diào)用方法叽躯,然后把值放到緩存去);

????@CacheEvit(移除緩存肌括,要放在conrtoller或者dao才起作) 点骑;

????@Caching(分組注解,能夠同時(shí)應(yīng)用到其他的緩存注解)?

????特別說(shuō)明:沒(méi)指定key谍夭,則方法的參數(shù)作為key保存到緩存中

????注:@cacheable和@cacheput都是有返回值的才能使用黑滴,@cacheEivt則可以在void上使用

????屬性含義:? value :要是用緩存的名稱;key值數(shù)據(jù)在緩存中的存儲(chǔ)的鍵

????Value 緩存名稱紧索;codition 為false不會(huì)放到緩存袁辈;key緩存的標(biāo)識(shí);unless 為true則不會(huì)放到緩存(有返回值才起作用珠漂;@cacheEvit沒(méi)有)晚缩。

????@cacheEvic特有的:allEntries 刪除所有的;beforeInvocation 默認(rèn)false 媳危;true則再方法調(diào)用前移除條目橡羞。

????緩存中使用到的key 的 SpEL的表達(dá)式:

???????? #result :返回值 (@cacheable不能用)

???????? #Argument任意方法的參數(shù)名或者參數(shù)索引。

???????? #root .args傳遞給緩存方法的參數(shù)济舆,形式為數(shù)組

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末卿泽,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子滋觉,更是在濱河造成了極大的恐慌签夭,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,591評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件椎侠,死亡現(xiàn)場(chǎng)離奇詭異第租,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)我纪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門慎宾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)丐吓,“玉大人,你說(shuō)我怎么就攤上這事趟据∪纾” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 162,823評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵汹碱,是天一觀的道長(zhǎng)粘衬。 經(jīng)常有香客問(wèn)我,道長(zhǎng)咳促,這世上最難降的妖魔是什么稚新? 我笑而不...
    開(kāi)封第一講書人閱讀 58,204評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮跪腹,結(jié)果婚禮上褂删,老公的妹妹穿的比我還像新娘。我一直安慰自己冲茸,他們只是感情好笤妙,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著噪裕,像睡著了一般蹲盘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上膳音,一...
    開(kāi)封第一講書人閱讀 51,190評(píng)論 1 299
  • 那天召衔,我揣著相機(jī)與錄音,去河邊找鬼祭陷。 笑死苍凛,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的兵志。 我是一名探鬼主播醇蝴,決...
    沈念sama閱讀 40,078評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼想罕!你這毒婦竟也來(lái)了悠栓?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 38,923評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤按价,失蹤者是張志新(化名)和其女友劉穎惭适,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體楼镐,經(jīng)...
    沈念sama閱讀 45,334評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡癞志,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了框产。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片凄杯。...
    茶點(diǎn)故事閱讀 39,727評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡错洁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出戒突,到底是詐尸還是另有隱情屯碴,我是刑警寧澤,帶...
    沈念sama閱讀 35,428評(píng)論 5 343
  • 正文 年R本政府宣布妖谴,位于F島的核電站窿锉,受9級(jí)特大地震影響酌摇,放射性物質(zhì)發(fā)生泄漏膝舅。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評(píng)論 3 326
  • 文/蒙蒙 一窑多、第九天 我趴在偏房一處隱蔽的房頂上張望仍稀。 院中可真熱鬧,春花似錦埂息、人聲如沸技潘。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,672評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)享幽。三九已至,卻和暖如春拾弃,著一層夾襖步出監(jiān)牢的瞬間值桩,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,826評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工豪椿, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留奔坟,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,734評(píng)論 2 368
  • 正文 我出身青樓搭盾,卻偏偏與公主長(zhǎng)得像咳秉,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子鸯隅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容