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

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

再比如:一些臨時(shí)性的數(shù)據(jù),為某個(gè)用戶的手機(jī)號(hào)發(fā)送了驗(yàn)證碼,三分鐘有效,過(guò)期刪除。如果將這些數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中,也是非常有壓力的。我們也可以將這些數(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)建、共享訪問(wèn)、假脫機(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)行期訪問(wè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è)定義的有效期。一旦超過(guò)這個(gè)時(shí)間,條目為過(guò)期的狀態(tài)。一旦過(guò)期,條目將不可訪問(wèn)、更新和刪除。緩存有效期可以通過(guò) ExpiryPolicy 設(shè)置。

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

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

在具體緩存組件中,我們還可以設(shè)置不同模塊的緩存,比如:Redis 中我們可以來(lái)緩存 商品信息、熱點(diǎn)數(shù)據(jù) 等不同模塊數(shù)據(jù),每個(gè)緩存都是Entry<K,V>鍵值對(duì)類型。并且我們可以對(duì)緩存設(shè)置Expiry過(guò)期時(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 接口,我們可以通過(guò) getCacheManager()方式來(lái)獲取 CacheManager。 CacheManger 通過(guò) createCache()、getCache() 方法來(lái)直接獲取到緩存Cache,緩存的具體增刪改查操作,就在 Cache 組件中。

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

4.Spring 緩存機(jī)制

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

下一篇,我們就來(lái)繼續(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)文章

最新評(píng)論