這篇文章將為大家詳細(xì)講解有關(guān)Spring怎么進(jìn)行緩存,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序定制開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了紅寺堡免費(fèi)建站歡迎大家使用!
是大家在項(xiàng)目開發(fā)過程中,或多或少都用過緩存,為了減少數(shù)據(jù)庫(kù)的壓力,把數(shù)據(jù)放在緩存當(dāng)中,當(dāng)訪問的請(qǐng)求過來時(shí),直接從緩存讀取。緩存一般都是基于內(nèi)存的,讀取速度比較快,市面上比較常見的緩存有:memcache、redis、MongoDB、guava cache等。
大家使用緩存時(shí),常用的邏輯是這樣的:
根據(jù)條件生成key;
從緩存中讀取數(shù)據(jù),若成功讀取數(shù)據(jù),則返回;
若數(shù)據(jù)不存在,根據(jù)條件從數(shù)據(jù)庫(kù)讀取;
將從數(shù)據(jù)庫(kù)中讀取的數(shù)據(jù)放入緩存;
返回?cái)?shù)據(jù);
每一個(gè)使用緩存的場(chǎng)景,上面的邏輯都要重寫一遍,是不是很煩躁,是不是很浪費(fèi)時(shí)間。有沒有簡(jiǎn)單的方法完成上面的邏輯?當(dāng)然有了,這就是今天要向大家介紹的Spring Cache。
Spring Cache并不神秘,而且使用起來非常的方便。它是注解組成的,最常用的一個(gè)注解是@Cacheable。這個(gè)注解是在方法上使用的,當(dāng)使用了注解的方法被調(diào)用時(shí),會(huì)先從緩存中查詢,如果緩存中不存在,則執(zhí)行方法,然后將方法的返回值放入緩存中。具體的使用方法如下:
首先,我們?cè)贗DEA中使用Spring Boot搭建環(huán)境,在選擇依賴的頁(yè)面中,我們選擇了Lombok和Cache,最主要的選擇Cache哦~ 項(xiàng)目搭建完畢后,我們看一下pom.xml的依賴:
我們看到在依賴中自動(dòng)添加了cache。接下來我們要在SpringBoot的啟動(dòng)類上加上使用cache的注解@EnableCaching,如圖:
然后我們編寫測(cè)試的controller,如下:
我們使用@RestController注解,所以它返回的是Json格式的結(jié)果。然后在方法上使用了@Cacheable注解,這是我們今天的主角。
cacheNames:當(dāng)系統(tǒng)中有多個(gè)緩存時(shí),指定該方法使用其中的哪幾個(gè)緩存。
key:緩存的key,可以使用spEL表達(dá)式,上面的例子中,使用了入?yún)ame。
還有其他的關(guān)鍵字,在這里沒有列出來,比如:
sync :true或false,當(dāng)并發(fā)量非常大時(shí),將同步開啟,可以保證只有一個(gè)線程執(zhí)行方法,其他線程將等待,然后從緩存中讀取數(shù)據(jù)。
condition:使用緩存的條件。
keyGenerator:指定key的生成器。
我們啟動(dòng)項(xiàng)目,并在瀏覽器第一次訪問http://localhost:8080/cache/test?name=allen,結(jié)果響應(yīng)很慢,過了5秒后,頁(yè)面顯示結(jié)果:
我們?cè)倏匆幌潞笈_(tái)日志:
打印語(yǔ)句打印出來了,說明第一次訪問時(shí),是執(zhí)行了方法的。我們?cè)僭跒g覽器請(qǐng)求相同的地址,結(jié)果返回了相同的結(jié)果,而且后臺(tái)沒有打印出日志,和上面兩張圖一模一樣。說明這次請(qǐng)求走了緩存,方法并沒有執(zhí)行。
關(guān)于Spring怎么進(jìn)行緩存就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。
分享標(biāo)題:Spring怎么進(jìn)行緩存
網(wǎng)址分享:http://chinadenli.net/article2/geosic.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)、定制開發(fā)、Google、標(biāo)簽優(yōu)化、App開發(fā)、網(wǎng)站改版
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)