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

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

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

緩存是每一個系統(tǒng)都應該考慮的功能,它用來加速系統(tǒng)的訪問,提升系統(tǒng)的性能。 比如說一些經(jīng)常需要訪問的高頻熱點數(shù)據(jù),例如:電商網(wǎng)站的商品信息。 如果商品信息存儲在數(shù)據(jù)庫中,每次來查詢商品信息都要來查詢數(shù)據(jù)庫的話,這樣的操作耗時太大,代價也相對太大。 此時我們可以引入一個緩存中間件,將商品信息存放在緩存中,就不需要直接來查詢數(shù)據(jù)庫了。 先來查詢緩存中是否有該商品的信息,如果有就直接拿來使用;如果沒有的話,然后再去數(shù)據(jù)庫中查詢,然后再將數(shù)據(jù)放回到緩存。因為應用程序與緩存的交互是非常快的,這樣的話就可以大大減緩數(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。一個應用可以在運行期訪問多個 CachingProvider。
CacheManager緩存管理器。 定義了創(chuàng)建、配置、獲取、管理和控制多個唯一命名的 Cache,這些 Cache 存在于 CacheManager 的上下文中。一個 CacheManager 僅被一個 CachingProvider 所擁有。
Cache緩存組件。 是一個類似 Map 的數(shù)據(jù)結構并臨時存儲以 key 為索引的值。一個 Cache 僅被一個 CacheManager 所擁有。
Entry鍵值對。 是一個存儲在 Cache 中的 key-value 對。
Expiry有效期。 每一個存儲在 Cache 中的條目有一個定義的有效期。一旦超過這個時間,條目為過期的狀態(tài)。一旦過期,條目將不可訪問、更新和刪除。緩存有效期可以通過 ExpiryPolicy 設置。

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

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

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

緩存在我們應用開發(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 緩存機制介紹

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

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

相關文章

最新評論