最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JSR-107緩存規(guī)范介紹

 更新時(shí)間:2025年05月22日 14:50:44   作者:扛麻袋的少年  
JSR是Java Specification Requests的縮寫,意思是Java規(guī)范提案,下面給大家介紹JSR-107緩存規(guī)范的相關(guān)知識(shí),感興趣的朋友一起看看吧

緩存是每一個(gè)系統(tǒng)都應(yīng)該考慮的功能,它用來加速系統(tǒng)的訪問,提升系統(tǒng)的性能。 比如說一些經(jīng)常需要訪問的高頻熱點(diǎn)數(shù)據(jù),例如:電商網(wǎng)站的商品信息。 如果商品信息存儲(chǔ)在數(shù)據(jù)庫中,每次來查詢商品信息都要來查詢數(shù)據(jù)庫的話,這樣的操作耗時(shí)太大,代價(jià)也相對(duì)太大。 此時(shí)我們可以引入一個(gè)緩存中間件,將商品信息存放在緩存中,就不需要直接來查詢數(shù)據(jù)庫了。 先來查詢緩存中是否有該商品的信息,如果有就直接拿來使用;如果沒有的話,然后再去數(shù)據(jù)庫中查詢,然后再將數(shù)據(jù)放回到緩存。因?yàn)閼?yīng)用程序與緩存的交互是非??斓模@樣的話就可以大大減緩數(shù)據(jù)庫的壓力。

再比如:一些臨時(shí)性的數(shù)據(jù),為某個(gè)用戶的手機(jī)號(hào)發(fā)送了驗(yàn)證碼,三分鐘有效,過期刪除。如果將這些數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫中,也是非常有壓力的。我們也可以將這些數(shù)據(jù)存儲(chǔ)在緩存中間件中。系統(tǒng)直接從緩存中獲取數(shù)據(jù)即可。

緩存在系統(tǒng)中用的還是非常多的。所以為了統(tǒng)一緩存的開發(fā)規(guī)范,提升系統(tǒng)的擴(kuò)展性。J2EE 發(fā)布了 JSR-107規(guī)范。主要提供了5個(gè)接口。

1.什么是JSR-107

JSR是Java Specification Requests的縮寫,意思是Java 規(guī)范提案。2012年10月26日J(rèn)SR規(guī)范委員會(huì)發(fā)布了JSR 107(JCache API的首個(gè)早期草案)。JCache 規(guī)范定義了一種對(duì)Java對(duì)象臨時(shí)在內(nèi)存中進(jìn)行緩存的方法,包括對(duì)象的創(chuàng)建、共享訪問、假脫機(jī)(spooling)、失效、各JVM的一致性等,可被用于緩存JSP內(nèi)最經(jīng)常讀取的數(shù)據(jù)。
Java Caching 定義了5個(gè)核心接口,分別是CachingProviderCacheManager、Cache、EntryExpiry。

接口介紹
CachingProvider緩存提供者。 定義了創(chuàng)建、配置、獲取、管理和控制多個(gè) CacheManager。一個(gè)應(yīng)用可以在運(yùn)行期訪問多個(gè) CachingProvider。
CacheManager緩存管理器。 定義了創(chuàng)建、配置、獲取、管理和控制多個(gè)唯一命名的 Cache,這些 Cache 存在于 CacheManager 的上下文中。一個(gè) CacheManager 僅被一個(gè) CachingProvider 所擁有。
Cache緩存組件。 是一個(gè)類似 Map 的數(shù)據(jù)結(jié)構(gòu)并臨時(shí)存儲(chǔ)以 key 為索引的值。一個(gè) Cache 僅被一個(gè) CacheManager 所擁有。
Entry鍵值對(duì)。 是一個(gè)存儲(chǔ)在 Cache 中的 key-value 對(duì)。
Expiry有效期。 每一個(gè)存儲(chǔ)在 Cache 中的條目有一個(gè)定義的有效期。一旦超過這個(gè)時(shí)間,條目為過期的狀態(tài)。一旦過期,條目將不可訪問、更新和刪除。緩存有效期可以通過 ExpiryPolicy 設(shè)置。

2.應(yīng)用調(diào)用緩存圖示

應(yīng)用來調(diào)用緩存,首先會(huì)先調(diào)用CachingProvider(緩存提供者),緩存提供者管理了多個(gè)CacheManager(緩存管理器),緩存管理器中才真正的Cache緩存。緩存管理器中可以管理不同類型的緩存,比如:Redis、EhCache 等。

在具體緩存組件中,我們還可以設(shè)置不同模塊的緩存,比如:Redis 中我們可以來緩存 商品信息、熱點(diǎn)數(shù)據(jù) 等不同模塊數(shù)據(jù),每個(gè)緩存都是Entry<K,V>鍵值對(duì)類型。并且我們可以對(duì)緩存設(shè)置Expiry過期時(shí)間,指定緩存存活的時(shí)間。

緩存在我們應(yīng)用開發(fā)中的調(diào)用步驟,如下圖所示:

3.JSR-107規(guī)范使用

在項(xiàng)目中使用 JSR-107規(guī)范,首先需要導(dǎo)入 Maven 依賴:

<dependency> 
	<groupId>javax.cache</groupId>
	<artifactId>cache-api</artifactId>
</dependency>

該包下提供了 CachingProvider 接口,我們可以通過 getCacheManager()方式來獲取 CacheManager。 CacheManger 通過 createCache()、getCache() 方法來直接獲取到緩存Cache,緩存的具體增刪改查操作,就在 Cache 組件中。

JSR-107 作為一個(gè) Java 規(guī)范,它定義的都是一些接口,類似于 JDBC 規(guī)范。它的好處在于:我們直接面向接口編程,需要用到哪種緩存的實(shí)現(xiàn),我們來直接引入該緩存實(shí)現(xiàn)即可,系統(tǒng)就能運(yùn)行起來。 然而:并不是市面上所有的緩存組件都提供了 JSR-107 規(guī)范的實(shí)現(xiàn)。如果我們選擇的緩存中間件沒有實(shí)現(xiàn) JSR-107 規(guī)范接口,那么就需要自己來實(shí)現(xiàn)咯。整個(gè)過程 API 開發(fā)也比較麻煩,所以 JSR-107 規(guī)范在我們的日常開發(fā)中用的還是比較少。

4.Spring 緩存機(jī)制

既然 JSR-107 規(guī)范馬失前蹄。Spring 為了簡化項(xiàng)目開發(fā),便為我們提供了自己的緩存機(jī)制。Spring 緩存機(jī)制底層概念同 JSR-107 是通用的,也定義了一些借口、注解等。所以后來在開發(fā)中,使用更多的也就是 Spring 緩存機(jī)制咯。

下一篇,我們就來繼續(xù)了解 Spring 緩存機(jī)制。→→→→→點(diǎn)擊跳轉(zhuǎn):Spring 緩存機(jī)制介紹

如果你還想要了解更多關(guān)于JSR-107規(guī)范相關(guān),請(qǐng)移步此處學(xué)習(xí):JSR107中文版(非官方)

到此這篇關(guān)于JSR-107緩存規(guī)范介紹的文章就介紹到這了,更多相關(guān)JSR-107緩存內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot整合Web開發(fā)之文件上傳與@ControllerAdvice

    SpringBoot整合Web開發(fā)之文件上傳與@ControllerAdvice

    @ControllerAdvice注解是Spring3.2中新增的注解,學(xué)名是Controller增強(qiáng)器,作用是給Controller控制器添加統(tǒng)一的操作或處理。對(duì)于@ControllerAdvice,我們比較熟知的用法是結(jié)合@ExceptionHandler用于全局異常的處理,但其作用不止于此
    2022-08-08
  • java判斷map是否有key的常用方法

    java判斷map是否有key的常用方法

    這篇文章主要為大家詳細(xì)介紹了java中判斷map是否有key的常用方法,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以了解
    2025-12-12
  • Windows配置多版本JDK的詳細(xì)步驟

    Windows配置多版本JDK的詳細(xì)步驟

    JDK是Java開發(fā)工具包的縮寫,包含了Java編譯器、Java虛擬機(jī)、Java類庫等眾多組件,是Java開發(fā)的基石,提供了編寫、編譯和運(yùn)行Java程序所必需的工具,有時(shí)候項(xiàng)目需要不同的JDK版本,所以本文給大家介紹了Windows配置多版本JDK的詳細(xì)步驟,需要的朋友可以參考下
    2025-04-04
  • 使用Java操作TensorFlow的方法

    使用Java操作TensorFlow的方法

    TensorFlow是一個(gè)功能強(qiáng)大且廣泛使用的框架,它不斷得到改進(jìn),并最近被引入新語言包括Java和JavaScript,這篇文章主要介紹了如何使用Java操作TensorFlow,需要的朋友可以參考下
    2023-05-05
  • Java實(shí)現(xiàn)文件圖片的預(yù)覽和下載功能

    Java實(shí)現(xiàn)文件圖片的預(yù)覽和下載功能

    這篇文章主要為大家詳細(xì)介紹了如何使用Java實(shí)現(xiàn)文件圖片的預(yù)覽和下載功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-04-04
  • springBoot整合RocketMQ及坑的示例代碼

    springBoot整合RocketMQ及坑的示例代碼

    這篇文章主要介紹了springBoot整合RocketMQ及坑的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-11-11
  • Java NIO異步文件通道原理及用法解析

    Java NIO異步文件通道原理及用法解析

    這篇文章主要介紹了Java NIO異步文件通道原理及用法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • @Scheduled 如何讀取動(dòng)態(tài)配置文件

    @Scheduled 如何讀取動(dòng)態(tài)配置文件

    這篇文章主要介紹了@Scheduled 如何讀取動(dòng)態(tài)配置文件的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Java應(yīng)用多機(jī)器部署解決大量定時(shí)任務(wù)問題

    Java應(yīng)用多機(jī)器部署解決大量定時(shí)任務(wù)問題

    這篇文章主要介紹了Java應(yīng)用多機(jī)器部署解決大量定時(shí)任務(wù)問題,兩臺(tái)服務(wù)器同時(shí)部署了同一套代碼, 代碼中寫有spring自帶的定時(shí)任務(wù),但是每次執(zhí)行定時(shí)任務(wù)時(shí)只需要一臺(tái)機(jī)器去執(zhí)行,需要的朋友可以參考下
    2019-07-07
  • spring?aop?pointcut?添加多個(gè)execution方式

    spring?aop?pointcut?添加多個(gè)execution方式

    這篇文章主要介紹了spring?aop?pointcut?添加多個(gè)execution方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11

最新評(píng)論

香格里拉县| 大姚县| 土默特左旗| 合川市| 清苑县| 鹤岗市| 武隆县| 曲周县| 金山区| 泰兴市| 那坡县| 宜兴市| 龙泉市| 延津县| 朝阳市| 曲麻莱县| 安泽县| 商都县| 祁门县| 锡林浩特市| 新安县| 朝阳市| 历史| 广南县| 丹阳市| 营山县| 伊春市| 柯坪县| 兴安盟| 贵溪市| 平果县| 兴海县| 慈溪市| 昆明市| 怀来县| 江陵县| 镇沅| 家居| 平湖市| 上杭县| 江都市|