欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring框架學(xué)習(xí)之Cache抽象詳解

 更新時(shí)間:2021年10月09日 15:18:04   作者:FantasyBaby  
這篇文章主要為大家介紹了Spring框架學(xué)習(xí)中Cache抽象詳解示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步

 官方文檔  8.0

Spring為不同緩存做了一層抽象,這里通過(guò)閱讀文檔以及源碼會(huì)對(duì)使用以及原理做一些學(xué)習(xí)筆記。

1.簡(jiǎn)介

從3.1版開(kāi)始,Spring Framework提供了對(duì)現(xiàn)有Spring應(yīng)用程序透明地添加緩存的支持。 與事務(wù)支持類(lèi)似,緩存抽象允許一致地使用各種緩存解決方案,而對(duì)代碼的影響最小。

從Spring 4.1開(kāi)始,通過(guò)JSR-107注釋和更多自定義選項(xiàng)的支持,緩存抽象得到了顯著改進(jìn)。

cache和buffer

從術(shù)語(yǔ)上看,"buffer"和"cache",可以互相被替換.但是,他們確實(shí)代表著不同的事情.

傳統(tǒng)上,一個(gè)buffer被用來(lái)作為快數(shù)據(jù)和慢數(shù)據(jù)之間的臨時(shí)存儲(chǔ).因?yàn)榭焖俚囊环叫枰却囊环?會(huì)影響性能),buffer通過(guò)允許整塊數(shù)據(jù)一次移動(dòng)而不是一小塊數(shù)據(jù)一點(diǎn)一點(diǎn)移動(dòng)來(lái)緩解壓力. 這個(gè)數(shù)據(jù)只會(huì)從buffer中被寫(xiě)入或者讀出一次.此外,buffers對(duì)總對(duì)一方可以見(jiàn).

Cache,則相反,通過(guò)定義,隱藏,并且不會(huì)讓對(duì)方意識(shí)到它的存在.它同樣提高性能,但是這是讓相同數(shù)據(jù)在同時(shí)以快速的方式被多次讀取來(lái)實(shí)現(xiàn)的.

2.緩存抽象

緩存抽象的核心是將緩存應(yīng)用于Java方法,從而減少了基于緩存中可用信息的執(zhí)行次數(shù)。也就是說(shuō),每次調(diào)用目標(biāo)方法時(shí),抽象都會(huì)應(yīng)用緩存行為檢查方法是否已經(jīng)為給定的參數(shù)執(zhí)行。如果有,則返回緩存的結(jié)果,而不必執(zhí)行實(shí)際的方法;如果沒(méi)有,則執(zhí)行方法,緩存結(jié)果并返回給用戶(hù),以便在下次調(diào)用方法時(shí)返回緩存的結(jié)果。這樣,對(duì)于給定的一組參數(shù),昂貴的方法(CPU或IO綁定)只能執(zhí)行一次,并且結(jié)果可以重用,而不必實(shí)際再次執(zhí)行該方法。緩存邏輯被透明地應(yīng)用,沒(méi)有任何對(duì)調(diào)用程序的干擾。

緩存抽象提供了其他緩存相關(guān)的操作,比如更新緩存的內(nèi)容或者刪除一個(gè)或者全部.如果緩存在處理數(shù)據(jù)的過(guò)程中經(jīng)常改變,這些操作將非常有用.

就像Spring Framework中的其他服務(wù)一樣,緩存服務(wù)是一種抽象(不是緩存實(shí)現(xiàn)),需要使用實(shí)際存儲(chǔ)來(lái)存儲(chǔ)緩存數(shù)據(jù) - 也就是說(shuō),抽象使開(kāi)發(fā)人員不必編寫(xiě)緩存相關(guān)邏輯,但它也不提供實(shí)際的數(shù)據(jù)存儲(chǔ)能力。

通過(guò)接口 org.springframework.cache.Cache(緩存)

和org.springframework.cache.CacheManager(緩存管理器)  實(shí)現(xiàn)緩存的抽象

這個(gè)抽象的一些實(shí)現(xiàn)可以直接使用:基于JDK java.util.concurrent.ConcurrentMap的緩存(即默認(rèn)的緩存是基于JVM的ConcurrentMap),Ehcache 2.x,Gemfire緩存,Caffeine,符合和JSR-107的緩存(例如Ehcache 3.x)。 有關(guān)插入其他緩存存儲(chǔ)/提供程序的更多信息,請(qǐng)參閱插入不同的后端緩存。

3.spring緩存抽象與多進(jìn)程

注意的是:

Spring的緩存抽象沒(méi)有特別處理多線(xiàn)程或者多進(jìn)程,這些都是緩存的實(shí)現(xiàn)來(lái)處理的。

如果你有多進(jìn)程環(huán)境(一個(gè)應(yīng)用部署在多個(gè)節(jié)點(diǎn)上),你需要配置相應(yīng)地提供你緩存的程序.根據(jù)你的用例,從多個(gè)節(jié)點(diǎn)上拷貝相通數(shù)據(jù)就足夠了.然而,如果在應(yīng)用的過(guò)程中修改了數(shù)據(jù),則需要有其他的機(jī)制來(lái)通知修改.

緩存一個(gè)專(zhuān)門(mén)的對(duì)象是一個(gè)與典型的get-if-not-found-then- proceed-and-put-eventually代碼塊等價(jià),是通過(guò)編程緩存交互找到.沒(méi)有鎖被使用,多個(gè)線(xiàn)程并發(fā)的獲取相同的數(shù)據(jù).刪除(eviction)也同樣如此.如果多個(gè)線(xiàn)程嘗試并發(fā)的更新或者刪除數(shù)據(jù),你也許就使用了過(guò)時(shí)(stale)的數(shù)據(jù).一些緩存提供方提供了更加高級(jí)的特性.從文檔中可以看到更多的細(xì)節(jié).

使用緩存你需要從兩方面看起:

  • 聲明緩存:確認(rèn)需要被緩存的方法還有他們使用的策略
  • 配置緩存: 存儲(chǔ)數(shù)據(jù)然后把數(shù)據(jù)讀到緩存中.

以上就是Spring框架學(xué)習(xí)之Cache抽象詳解的詳細(xì)內(nèi)容,更多關(guān)于Spring框架Cache抽象的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • java中Swing會(huì)奔跑的線(xiàn)程俠

    java中Swing會(huì)奔跑的線(xiàn)程俠

    本文通過(guò)代碼示例給大家詳細(xì)講解了java中Swing會(huì)奔跑的線(xiàn)程俠這個(gè)經(jīng)典的示例,有興趣的朋友學(xué)習(xí)下。
    2018-03-03
  • java工程師進(jìn)階之MyBatis延遲加載的使用

    java工程師進(jìn)階之MyBatis延遲加載的使用

    本文是java工程師進(jìn)階篇,主要介紹了java應(yīng)用開(kāi)發(fā)中MyBatis延遲加載及如何使用,有需要的朋友 可以借鑒參考下,希望能夠有所幫助
    2021-09-09
  • IDEA 創(chuàng)建多級(jí)文件夾的操作

    IDEA 創(chuàng)建多級(jí)文件夾的操作

    這篇文章主要介紹了IDEA 創(chuàng)建多級(jí)文件夾的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-02-02
  • Java實(shí)戰(zhàn)之酒店人事管理系統(tǒng)的實(shí)現(xiàn)

    Java實(shí)戰(zhàn)之酒店人事管理系統(tǒng)的實(shí)現(xiàn)

    這篇文章主要介紹了如何用Java實(shí)現(xiàn)酒店人事管理系統(tǒng),文中采用的技術(shù)有:JSP、Spring、SpringMVC、MyBatis等,感興趣的小伙伴可以學(xué)習(xí)一下
    2022-03-03
  • Java NIO服務(wù)器端開(kāi)發(fā)詳解

    Java NIO服務(wù)器端開(kāi)發(fā)詳解

    這篇文章主要介紹了Java NIO服務(wù)器端開(kāi)發(fā)詳解,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • 如何將應(yīng)用的log4j替換成logback詳解

    如何將應(yīng)用的log4j替換成logback詳解

    無(wú)論從設(shè)計(jì)上還是實(shí)現(xiàn)上,Logback相對(duì)log4j而言有了相對(duì)多的改進(jìn)。所以下面這篇文章主要給大家介紹了關(guān)于如何將應(yīng)用的log4j換成logback的相關(guān)資料,文中介紹的很詳細(xì),需要的朋友可以參考下。
    2017-02-02
  • java實(shí)現(xiàn)從方法返回多個(gè)值功能示例

    java實(shí)現(xiàn)從方法返回多個(gè)值功能示例

    這篇文章主要介紹了java實(shí)現(xiàn)從方法返回多個(gè)值功能,結(jié)合實(shí)例形式分析了集合類(lèi)、封裝對(duì)象、引用傳遞三種實(shí)現(xiàn)方法,需要的朋友可以參考下
    2017-10-10
  • Java遞歸算法的使用分析

    Java遞歸算法的使用分析

    本篇文章介紹了,在Java中遞歸算法的使用分析。需要的朋友參考下
    2013-04-04
  • SpringBoot注入Bean的四種方式總結(jié)

    SpringBoot注入Bean的四種方式總結(jié)

    這篇文章主要給大家總結(jié)SpringBoot注入Bean的四種方式,啟動(dòng)類(lèi)注入Bean,啟動(dòng)類(lèi)掃描@ComponentScan,啟動(dòng)類(lèi)@EnableConfigurationProperties以及啟動(dòng)類(lèi)@Import這四種方式,文章通過(guò)代碼示例講解非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • log4j配置失效日志中打印Debug信息問(wèn)題

    log4j配置失效日志中打印Debug信息問(wèn)題

    這篇文章主要介紹了log4j配置失效日志中打印Debug信息問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12

最新評(píng)論