溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Spring怎么進(jìn)行緩存

發(fā)布時(shí)間:2022-01-04 16:45:34 來(lái)源:億速云 閱讀:101 作者:柒染 欄目:大數(shù)據(jù)

這篇文章將為大家詳細(xì)講解有關(guān)Spring怎么進(jìn)行緩存,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

是大家在項(xiàng)目開(kāi)發(fā)過(guò)程中,或多或少都用過(guò)緩存,為了減少數(shù)據(jù)庫(kù)的壓力,把數(shù)據(jù)放在緩存當(dāng)中,當(dāng)訪(fǎng)問(wèn)的請(qǐng)求過(guò)來(lái)時(shí),直接從緩存讀取。緩存一般都是基于內(nèi)存的,讀取速度比較快,市面上比較常見(jiàn)的緩存有:memcache、redis、mongodb、guava cache等。

緩存的常規(guī)用法

大家使用緩存時(shí),常用的邏輯是這樣的:

  1. 根據(jù)條件生成key;

  2. 從緩存中讀取數(shù)據(jù),若成功讀取數(shù)據(jù),則返回;

  3. 若數(shù)據(jù)不存在,根據(jù)條件從數(shù)據(jù)庫(kù)讀?。?/p>

  4. 將從數(shù)據(jù)庫(kù)中讀取的數(shù)據(jù)放入緩存;

  5. 返回?cái)?shù)據(jù);

每一個(gè)使用緩存的場(chǎng)景,上面的邏輯都要重寫(xiě)一遍,是不是很煩躁,是不是很浪費(fèi)時(shí)間。有沒(méi)有簡(jiǎn)單的方法完成上面的邏輯?當(dāng)然有了,這就是今天要向大家介紹的Spring Cache。

Spring Cache

Spring Cache并不神秘,而且使用起來(lái)非常的方便。它是注解組成的,最常用的一個(gè)注解是@Cacheable。這個(gè)注解是在方法上使用的,當(dāng)使用了注解的方法被調(diào)用時(shí),會(huì)先從緩存中查詢(xún),如果緩存中不存在,則執(zhí)行方法,然后將方法的返回值放入緩存中。具體的使用方法如下:

Spring怎么進(jìn)行緩存

首先,我們?cè)贗DEA中使用Spring Boot搭建環(huán)境,在選擇依賴(lài)的頁(yè)面中,我們選擇了Lombok和Cache,最主要的選擇Cache哦~ 項(xiàng)目搭建完畢后,我們看一下pom.xml的依賴(lài):

Spring怎么進(jìn)行緩存

我們看到在依賴(lài)中自動(dòng)添加了cache。接下來(lái)我們要在SpringBoot的啟動(dòng)類(lèi)上加上使用cache的注解@EnableCaching,如圖:

Spring怎么進(jìn)行緩存

然后我們編寫(xiě)測(cè)試的controller,如下:

Spring怎么進(jìn)行緩存

我們使用@RestController注解,所以它返回的是Json格式的結(jié)果。然后在方法上使用了@Cacheable注解,這是我們今天的主角。

  • cacheNames:當(dāng)系統(tǒng)中有多個(gè)緩存時(shí),指定該方法使用其中的哪幾個(gè)緩存。

  • key:緩存的key,可以使用spEL表達(dá)式,上面的例子中,使用了入?yún)ame。

還有其他的關(guān)鍵字,在這里沒(méi)有列出來(lái),比如:

  • sync :true或false,當(dāng)并發(fā)量非常大時(shí),將同步開(kāi)啟,可以保證只有一個(gè)線(xiàn)程執(zhí)行方法,其他線(xiàn)程將等待,然后從緩存中讀取數(shù)據(jù)。

  • condition:使用緩存的條件。

  • keyGenerator:指定key的生成器。

我們啟動(dòng)項(xiàng)目,并在瀏覽器第一次訪(fǎng)問(wèn)http://localhost:8080/cache/test?name=allen,結(jié)果響應(yīng)很慢,過(guò)了5秒后,頁(yè)面顯示結(jié)果:

Spring怎么進(jìn)行緩存

我們?cè)倏匆幌潞笈_(tái)日志:

Spring怎么進(jìn)行緩存

打印語(yǔ)句打印出來(lái)了,說(shuō)明第一次訪(fǎng)問(wèn)時(shí),是執(zhí)行了方法的。我們?cè)僭跒g覽器請(qǐng)求相同的地址,結(jié)果返回了相同的結(jié)果,而且后臺(tái)沒(méi)有打印出日志,和上面兩張圖一模一樣。說(shuō)明這次請(qǐng)求走了緩存,方法并沒(méi)有執(zhí)行。

關(guān)于Spring怎么進(jìn)行緩存就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI