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

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

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

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

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

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

1.什么是JSR-107

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

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

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

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

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

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

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

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

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

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

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

4.Spring 緩存機制

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

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

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

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

相關(guān)文章

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

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

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

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

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

    Windows配置多版本JDK的詳細步驟

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

    使用Java操作TensorFlow的方法

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

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

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

    springBoot整合RocketMQ及坑的示例代碼

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

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

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

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

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

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

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

    spring?aop?pointcut?添加多個execution方式

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

最新評論

德钦县| 商南县| 新乐市| 沛县| 东辽县| 磐安县| 肃宁县| 辽阳县| 通化县| 广宗县| 绍兴县| 永定县| 监利县| 虞城县| 潍坊市| 通山县| 青冈县| 汝阳县| 英山县| 龙口市| 宜兴市| 南宫市| 富平县| 云安县| 新野县| 奉贤区| 吉隆县| 萍乡市| 泽库县| 萨迦县| 南安市| 西和县| 南城县| 宁陕县| 开平市| 托克托县| 沙雅县| 永昌县| 林芝县| 开原市| 天门市|