怎么用Java寫一個(gè)簡單的緩存操作類

本篇內(nèi)容介紹了“怎么用Java寫一個(gè)簡單的緩存操作類”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

創(chuàng)新互聯(lián)致力于互聯(lián)網(wǎng)品牌建設(shè)與網(wǎng)絡(luò)營銷,包括網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)、SEO優(yōu)化、網(wǎng)絡(luò)推廣、整站優(yōu)化營銷策劃推廣、電子商務(wù)、移動(dòng)互聯(lián)網(wǎng)營銷等。創(chuàng)新互聯(lián)為不同類型的客戶提供良好的互聯(lián)網(wǎng)應(yīng)用定制及解決方案,創(chuàng)新互聯(lián)核心團(tuán)隊(duì)10余年專注互聯(lián)網(wǎng)開發(fā),積累了豐富的網(wǎng)站經(jīng)驗(yàn),為廣大企業(yè)客戶提供一站式企業(yè)網(wǎng)站建設(shè)服務(wù),在網(wǎng)站建設(shè)行業(yè)內(nèi)樹立了良好口碑。


 

一、分析

首先分析一下緩存類該如何設(shè)計(jì),這里我以一種非常簡單的方式來實(shí)現(xiàn)一個(gè)緩存類,這也是我一直以來使用的設(shè)計(jì)方案。

為了明確功能,首先定義一個(gè)接口類CacheInt,然后是緩存實(shí)現(xiàn)的工具類CacheUtil。然后再看其中的功能,為了存取方便,緩存應(yīng)是以鍵值對(duì)的形式存取,為了適應(yīng)更多的場景,所以在存取的時(shí)候可以加一個(gè)緩存過期時(shí)間,然后再加上其他常見的添加、獲取、刪除、緩存大小、是否存在key、清理過期緩存等方法,整個(gè)緩存工具的方法差不多就是這些。

緩存類需要注意的問題:

  1. 緩存對(duì)象應(yīng)該是唯一的,也就是單例的;

  2. 緩存的操作方法要同步,在多線程并發(fā)條件下防止出錯(cuò);

  3. 緩存的容器應(yīng)該具有較高的并發(fā)性能,ConcurrentHashMap是一個(gè)不錯(cuò)的選擇。

 

二、具體實(shí)現(xiàn)

 

1. CacheInt接口的定義

CacheInt接口的定義如下:

怎么用Java寫一個(gè)簡單的緩存操作類

怎么用Java寫一個(gè)簡單的緩存操作類

 

2. CacheUtil的具體實(shí)現(xiàn)

緩存實(shí)現(xiàn)的核心就是CacheUtil,下面結(jié)合注釋進(jìn)行說明,為了避免文章篇幅冗雜,以下截圖就是完整源碼截圖,并且保持先后順序。

首先是類定義和其屬性定義,其中本類實(shí)例對(duì)象用volatile進(jìn)行修飾提高可見性,初始化緩存容量用于初始化ConcurrentHashMap緩存容器的大小,此大小根據(jù)實(shí)際應(yīng)用場景進(jìn)行優(yōu)化。

怎么用Java寫一個(gè)簡單的緩存操作類

然后是內(nèi)部類Entry的定義,該類是用來存儲(chǔ)實(shí)際數(shù)據(jù)的,為了方便處理過期時(shí)間,添加初始化時(shí)間戳、過期時(shí)間等屬性。

怎么用Java寫一個(gè)簡單的緩存操作類

然后是使用雙檢鎖單例方式獲取本類實(shí)例對(duì)象,因?yàn)閱卫荒艽嬖谖ㄒ坏奶攸c(diǎn),所以注意構(gòu)造函數(shù)需要設(shè)為private

怎么用Java寫一個(gè)簡單的緩存操作類

接下來是存入緩存數(shù)據(jù)put()方法,這里的clearExpiredCache()是清理過期緩存,后面會(huì)看到方法體,因?yàn)樵谖翼?xiàng)目中存入緩存的情況較少,所以這里我固定了每次存之前先清理一次過期時(shí)間緩存,這里可以根據(jù)自己項(xiàng)目實(shí)際情況進(jìn)行優(yōu)化。

怎么用Java寫一個(gè)簡單的緩存操作類

然后是獲取緩存get()方法,因?yàn)楂@取數(shù)據(jù)的時(shí)間較為多數(shù),所以這里我設(shè)定了三分之一的概率清理過期緩存,適當(dāng)?shù)蒯尫哦褍?nèi)存,并且在獲取時(shí)檢測是否過期,如果已過期然而還獲取到了,就刪除并返回空。

怎么用Java寫一個(gè)簡單的緩存操作類

然后就是比較常規(guī)的一些方法,具體可以看代碼

怎么用Java寫一個(gè)簡單的緩存操作類

最后一個(gè)方法就是清理過期緩存,這里你可以選擇啟動(dòng)一個(gè)監(jiān)聽線程實(shí)時(shí)地清理緩存,也可以選擇在適當(dāng)時(shí)機(jī)進(jìn)行一次清理,比如我這里就是在存在put和get操作時(shí)固定或概率地清理緩存。

怎么用Java寫一個(gè)簡單的緩存操作類

 

三、并發(fā)測試

普通的實(shí)現(xiàn)測試這里就不展示了,肯定是沒問題的,讀者簡單寫一些測試樣例即可,這里主要展示一下并發(fā)測試,因?yàn)樵趯?shí)際情況中存在并發(fā)處理緩存情況,為了確保其正確性,所以并發(fā)測試是必須要做的,下面放出我的測試樣例。

怎么用Java寫一個(gè)簡單的緩存操作類

怎么用Java寫一個(gè)簡單的緩存操作類

怎么用Java寫一個(gè)簡單的緩存操作類

怎么用Java寫一個(gè)簡單的緩存操作類

最后測試的表現(xiàn)是很好,沒有出現(xiàn)不正確的情況,部分測試結(jié)果截圖如下:

怎么用Java寫一個(gè)簡單的緩存操作類

怎么用Java寫一個(gè)簡單的緩存操作類

怎么用Java寫一個(gè)簡單的緩存操作類

“怎么用Java寫一個(gè)簡單的緩存操作類”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

網(wǎng)站欄目:怎么用Java寫一個(gè)簡單的緩存操作類
當(dāng)前地址:http://bm7419.com/article32/pcgssc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、全網(wǎng)營銷推廣、營銷型網(wǎng)站建設(shè)、手機(jī)網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計(jì)公司