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

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

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

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

再比如:一些臨時(shí)性的數(shù)據(jù),為某個(gè)用戶的手機(jī)號發(fā)送了驗(yàn)證碼,三分鐘有效,過期刪除。如果將這些數(shù)據(jù)存儲在數(shù)據(jù)庫中,也是非常有壓力的。我們也可以將這些數(shù)據(jù)存儲在緩存中間件中。系統(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ī)范委員會發(fā)布了JSR 107(JCache API的首個(gè)早期草案)。JCache 規(guī)范定義了一種對Java對象臨時(shí)在內(nèi)存中進(jìn)行緩存的方法,包括對象的創(chuàng)建、共享訪問、假脫機(jī)(spooling)、失效、各JVM的一致性等,可被用于緩存JSP內(nèi)最經(jīng)常讀取的數(shù)據(jù)。
Java Caching 定義了5個(gè)核心接口,分別是CachingProvider、CacheManagerCache、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í)存儲以 key 為索引的值。一個(gè) Cache 僅被一個(gè) CacheManager 所擁有。
Entry鍵值對。 是一個(gè)存儲在 Cache 中的 key-value 對。
Expiry有效期。 每一個(gè)存儲在 Cache 中的條目有一個(gè)定義的有效期。一旦超過這個(gè)時(shí)間,條目為過期的狀態(tài)。一旦過期,條目將不可訪問、更新和刪除。緩存有效期可以通過 ExpiryPolicy 設(shè)置。

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

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

在具體緩存組件中,我們還可以設(shè)置不同模塊的緩存,比如:Redis 中我們可以來緩存 商品信息、熱點(diǎn)數(shù)據(jù) 等不同模塊數(shù)據(jù),每個(gè)緩存都是Entry<K,V>鍵值對類型。并且我們可以對緩存設(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),請移步此處學(xué)習(xí):JSR107中文版(非官方)

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

相關(guān)文章

最新評論