[發(fā)明專利]一種通用緩存的方法無效
| 申請?zhí)枺?/td> | 200610112512.2 | 申請日: | 2006-08-22 |
| 公開(公告)號: | CN101131673A | 公開(公告)日: | 2008-02-27 |
| 發(fā)明(設(shè)計)人: | 唐鯤鵬;呂吉;單良 | 申請(專利權(quán))人: | 中興通訊股份有限公司 |
| 主分類號: | G06F12/08 | 分類號: | G06F12/08 |
| 代理公司: | 北京律誠同業(yè)知識產(chǎn)權(quán)代理有限公司 | 代理人: | 梁揮;徐金國 |
| 地址: | 518057廣東省深圳市南山*** | 國省代碼: | 廣東;44 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 通用 緩存 方法 | ||
技術(shù)領(lǐng)域
本發(fā)明涉及一種數(shù)據(jù)處理方法,特別涉及一種數(shù)據(jù)的緩存方法。
背景技術(shù)
目前在業(yè)務(wù)軟件系統(tǒng)應(yīng)用中,對于系統(tǒng)處理性能要求越來越高,所以應(yīng)該避免頻繁的進(jìn)行數(shù)據(jù)庫操作和文件讀寫。為解決數(shù)據(jù)讀取低效的問題必然會考慮到使用緩存技術(shù)。緩存就是將一定的數(shù)據(jù)存放在內(nèi)存中,當(dāng)系統(tǒng)需要訪問此數(shù)據(jù)時,將可以直接從內(nèi)存中讀取,而減免了數(shù)據(jù)庫操作和文件讀寫的耗時。在現(xiàn)實環(huán)境下,對于大數(shù)據(jù)量,系統(tǒng)不可能將所有數(shù)據(jù)緩存到內(nèi)存中,所以需要使用一定的策略進(jìn)行緩存項的淘汰,并且緩存需要在它的緩存項發(fā)生變化的時候?qū)ζ溥M(jìn)行更新處理。
目前現(xiàn)有的緩存系統(tǒng)大多采用LRU(最近最少使用)算法,LRU算法是一種比較簡單的淘汰選擇算法,它不能真實的反映緩存中內(nèi)容的使用情況。
目前現(xiàn)有的一些緩存系統(tǒng)為了實現(xiàn)簡單,而沒有提供緩存同步功能,這將導(dǎo)致緩存的數(shù)據(jù)和真實數(shù)據(jù)的偏差。有一些緩存系統(tǒng)雖然提供了緩存同步功能,但是因為需要消耗大量的系統(tǒng)資源,導(dǎo)致緩存同步代價過大。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題在于提出一種通用緩存的方法,在系統(tǒng)對外部數(shù)據(jù)源需要進(jìn)行頻繁訪問時,能夠有效地提高讀取數(shù)據(jù)的性能。
為實現(xiàn)上述目的,本發(fā)明提出了一種通用緩存的方法,用于獲取緩存中存儲的數(shù)據(jù),其中,包括:
步驟一,在緩存中設(shè)置與外部數(shù)據(jù)源連接的用于獲取外部數(shù)據(jù)的接口;
步驟二,將緩存分配成多個緩存段,將一個數(shù)據(jù)只存放在一個緩存段里,設(shè)置每個緩存段的名稱和數(shù)據(jù)的主健值;
步驟三,當(dāng)緩存系統(tǒng)收到數(shù)據(jù)訪問請求時,根據(jù)請求訪問的緩存段名稱和數(shù)據(jù)的主健值,訪問對應(yīng)的緩存段,并判斷所述緩存段中是否已存儲所請求的數(shù)據(jù),若已存儲,則輸出所請求的數(shù)據(jù),若未存儲,則通過所述接口從外部數(shù)據(jù)源獲取所請求的數(shù)據(jù),保存所請求的數(shù)據(jù)至所述緩存段中并輸出。
上述的通用緩存的方法,其特征在于,還包括:
當(dāng)訪問或者修改所述緩存段時,設(shè)置段級鎖,鎖定所述緩存段的步驟;和
當(dāng)從所述外部數(shù)據(jù)源讀取所述請求的數(shù)據(jù)時,為所述緩存段中對應(yīng)的數(shù)據(jù)設(shè)置行級鎖,鎖定所請求的數(shù)據(jù)的步驟。
上述的通用緩存的方法,其中,所述步驟三還包括:
步驟31,當(dāng)所述緩存段中已存儲所請求的數(shù)據(jù)時,判斷所述已存儲的數(shù)據(jù)對應(yīng)的外部數(shù)據(jù)源中的數(shù)據(jù)是否已經(jīng)被更新;
步驟32,若未被更新,則直接輸出所述已存儲的數(shù)據(jù),若已被更新,則調(diào)用所述接口從外部數(shù)據(jù)源獲取對應(yīng)的數(shù)據(jù)并更新所述緩存項中存儲的數(shù)據(jù)。
上述的通用緩存的方法,其中,所述步驟三具體包括:
步驟41,根據(jù)緩存段的名稱和所請求的數(shù)據(jù)的主鍵值,訪問所述緩存項并查找所請求的數(shù)據(jù);
步驟42,為所述緩存段添加段級鎖,判斷所請求的數(shù)據(jù)是否存儲在所述緩存項中,若已存儲,則進(jìn)入步驟43,若未存儲,則進(jìn)入步驟44;
步驟43,判斷所請求的數(shù)據(jù)對應(yīng)的外部數(shù)據(jù)源中的數(shù)據(jù)是否被更新,若未被更新,則進(jìn)入步驟47,若已被更新,則進(jìn)入步驟46;
步驟44,判斷所請求的數(shù)據(jù)是否已被添加了行級鎖,若沒有被添加,則進(jìn)入步驟46,若所請求的數(shù)據(jù)已被添加了行級鎖,則進(jìn)入步驟45;
步驟45,釋放段級鎖,在所述行級鎖被釋放后,進(jìn)入步驟47;
步驟46,釋放所述段級鎖,在所請求的數(shù)據(jù)上添加行級鎖,通過所述接口,從外部數(shù)據(jù)源獲取所請求的數(shù)據(jù),保存至所述緩存段中,然后進(jìn)入步驟47;
步驟47,輸出所述緩存段中存放的所請求的數(shù)據(jù)。
上述的通用緩存的方法,其中,當(dāng)通過所述接口從外部數(shù)據(jù)源獲取所請求的數(shù)據(jù)之后,還包括以下步驟:
步驟51,對所述緩存段添加段級鎖;
步驟52,判斷所述緩存段是否存在足夠的剩余空間存儲所述通過接口獲取的數(shù)據(jù),若存在足夠的剩余空間,則進(jìn)入步驟53,若不存在足夠的空間,則在所述緩存段中釋放出足夠的空間,然后進(jìn)入步驟53;
步驟53,將從所述接口獲取的所請求的數(shù)據(jù)更新所述緩存段,釋放所述段級鎖和行級鎖,輸出更新后所請求的數(shù)據(jù)。
上述的通用緩存的方法,其中,所述步驟52中,當(dāng)所述緩存段沒有足夠的存儲空間時,采用接觸計數(shù)器法在所述緩存段中釋放足夠的存儲空間,具體包括以下步驟:
步驟61,查找出所述緩存段中被訪問次數(shù)最少的數(shù)據(jù);
步驟62,若被訪問次數(shù)最少的數(shù)據(jù)只有一個,則從所述緩存段中刪除所述數(shù)據(jù),若被訪問次數(shù)最少的數(shù)據(jù)有多個,則將所述多個數(shù)據(jù)中占用空間最大的數(shù)據(jù)刪除;
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于中興通訊股份有限公司,未經(jīng)中興通訊股份有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/200610112512.2/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 逐出高速緩存的行的電路布置、數(shù)據(jù)處理系統(tǒng)和方法
- 共享緩存管理系統(tǒng)及方法
- 分布式緩存系統(tǒng)、數(shù)據(jù)的緩存方法及緩存數(shù)據(jù)的查詢方法
- 一種緩存替換方法;裝置和系統(tǒng)
- 加速引擎及處理器
- 一種日志緩存方法、系統(tǒng)、設(shè)備及計算機(jī)可讀存儲介質(zhì)
- 緩存控制方法、裝置和計算機(jī)可讀存儲介質(zhì)
- 至少具有三個緩存級別的緩存層級的混合低級緩存包含策略
- 基于雙緩存區(qū)的緩存方法、裝置、設(shè)備及存儲介質(zhì)
- 緩存預(yù)載方法、裝置、處理器芯片及服務(wù)器





