欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種數(shù)據(jù)庫緩存的方法

文檔序號:6357503閱讀:207來源:國知局
專利名稱:一種數(shù)據(jù)庫緩存的方法
技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)據(jù)庫技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)庫緩存的方法。
背景技術(shù)
在面臨大規(guī)模訪問的網(wǎng)絡(luò)應(yīng)用中,數(shù)據(jù)庫往往成為整個系統(tǒng)的瓶頸。為減少數(shù)據(jù) 庫訪問壓力,當(dāng)前互聯(lián)網(wǎng)應(yīng)用廣泛的采用諸如MemCache之類的緩存機(jī)制,用于緩存數(shù)據(jù), 以減少應(yīng)用服務(wù)器對數(shù)據(jù)庫的訪問次數(shù),提高系統(tǒng)響應(yīng)效率。當(dāng)前各類文件緩存、內(nèi)存緩存 系統(tǒng)發(fā)展迅速,為應(yīng)用程序開發(fā)者提供了很多選擇,這些緩存往往采用Key-Value的映射 機(jī)制,每一個Key (鍵值或者緩存名稱)對應(yīng)一個具體的Value (存儲內(nèi)容),應(yīng)用程序通過 特定的Key來寫入或者讀取所需的數(shù)據(jù),并設(shè)置為一定長度的緩存過期時間,緩存系統(tǒng)根 據(jù)這一時間來維護(hù)這些緩存數(shù)據(jù)?,F(xiàn)有技術(shù)方案在進(jìn)行緩存處理時,會先按照當(dāng)前內(nèi)容來設(shè)定不同的key,并將對應(yīng) 內(nèi)容寫入到該Key相關(guān)的緩存中去,緩存的Key命名規(guī)則通常與內(nèi)容數(shù)據(jù)存在某種直接聯(lián) 系,如圖1所示,例如ID (數(shù)據(jù)庫中內(nèi)容的主鍵或者內(nèi)容的其它形式唯一標(biāo)識符)為10的 這一條內(nèi)容其緩存Key可以命名為Single_10,這種機(jī)制使得通過內(nèi)容的ID能夠得到與之 相關(guān)的緩存Key。由于采用緩存的原因,在需要數(shù)據(jù)的時候,應(yīng)用程序直接從緩存中讀取數(shù)據(jù),固然 使得數(shù)據(jù)的訪問更快,系統(tǒng)壓力減少,但也正由于緩存的關(guān)系,使得數(shù)據(jù)往往不能得到及時 更新,在一些關(guān)鍵性數(shù)據(jù)需要實(shí)時修改更新時,現(xiàn)有辦法或者在寫入緩存時,便將其過期時 間設(shè)置較短,或者向緩存系統(tǒng)請求刪除某個Key,或者干脆整體清空緩存。
現(xiàn)有方案解決單條內(nèi)容的緩存比較容易實(shí)現(xiàn),但對于保存內(nèi)容列表的集合型緩存則很 難處理。現(xiàn)有對緩存的使用或者簡單依賴緩存的自動過期時間,將其設(shè)置的較短,使其不 至于延時過長,但在一些非常關(guān)鍵的敏感性內(nèi)容必須被修改、刪除時,即便設(shè)置了相對較短 的緩存時間,但在這一時間內(nèi),本來應(yīng)該被刪除或更新的內(nèi)容仍然能夠被訪問到,會造成較 大的內(nèi)容安全問題。采用整體清空緩存的辦法固然能夠解決數(shù)據(jù)更新不及時的問題,但是會導(dǎo)致系統(tǒng) 負(fù)載上升,尤其是這一操作比較頻繁時,緩存基本失去其應(yīng)有效果。而采用請求緩存系統(tǒng)刪除單個Key的時候,適用于單個內(nèi)容的緩存,而不適用于 許多內(nèi)容的集合型緩存。當(dāng)數(shù)據(jù)非常龐大的時候,由于內(nèi)容展現(xiàn)的復(fù)雜性,同樣的一條內(nèi)容 有很大概率在不同的列表區(qū)域展現(xiàn),如圖2所示,例如Contentl這一條內(nèi)容,可能在多個內(nèi) 容列表中多次出現(xiàn),而緩存體系會將整個列表區(qū)域整體緩存,例如建立了 key為list_n的 集合緩存,其Value包含了所有該列表擁有的所有內(nèi)容,以便應(yīng)用程序能夠一次讀取所有 數(shù)據(jù),起到緩存的目的?,F(xiàn)有對緩存的使用方法,在大規(guī)模數(shù)據(jù)中,很難低性能消耗的快速找到所有包含 該內(nèi)容的集合型緩存,并保證所有緩存都及時更新,顯然簡單的刪除一個Key不能解決這
3一問題。

發(fā)明內(nèi)容
本發(fā)明的目的在于提出一種數(shù)據(jù)庫緩存的方法,在兼顧訪問性能的同時,實(shí)現(xiàn)可 索引的緩存,解決了涉及內(nèi)容安全性等需要及時更新內(nèi)容時的技術(shù)問題。為達(dá)此目的,本發(fā)明采用以下技術(shù)方案 一種數(shù)據(jù)庫緩存的方法,包括以下步驟
A、數(shù)據(jù)庫生成一條緩存時,將緩存數(shù)據(jù)存放在緩存中的常規(guī)區(qū)域,緩存數(shù)據(jù)包括一個 列表請求的所有內(nèi)容;
B、生成包含所述所有內(nèi)容的唯一標(biāo)識符的數(shù)組數(shù)據(jù),存放在緩存中的映射區(qū)域,所述 數(shù)組數(shù)據(jù)的鍵值與所述緩存數(shù)據(jù)的鍵值對應(yīng);
C、需要更新或者刪除一條內(nèi)容時,建立一個值為空的數(shù)據(jù),存放在緩存中的更新區(qū)域, 所述空值數(shù)據(jù)的鍵值包含所述一條內(nèi)容的唯一標(biāo)識符;
D、當(dāng)訪問數(shù)據(jù)集合時,根據(jù)命名規(guī)則生成數(shù)據(jù)集合對應(yīng)的鍵值;
E、查找映射區(qū)域,判斷是否存在與數(shù)據(jù)集合對應(yīng)的鍵值相同的鍵值,如果不存在,則轉(zhuǎn) 至步驟F,如果存在,則轉(zhuǎn)至步驟G ;
F、確認(rèn)緩存中沒有需要訪問的數(shù)據(jù)集合,訪問數(shù)據(jù)庫,獲取需要訪問的數(shù)據(jù)集合,進(jìn)行 輸出;
G、從映射區(qū)域取出鍵值對應(yīng)的數(shù)組,獲得數(shù)組包含的所述所有內(nèi)容的唯一標(biāo)識符;
H、根據(jù)所述所有內(nèi)容的唯一標(biāo)識符,逐個判斷在更新區(qū)域中是否存在與唯一標(biāo)識符相 同的鍵值,如果存在,則轉(zhuǎn)至步驟I,如果不存在,則轉(zhuǎn)至步驟J ;
I、刪除常規(guī)區(qū)域中的所述緩存數(shù)據(jù),訪問數(shù)據(jù)庫,獲取需要訪問的數(shù)據(jù)集合,進(jìn)行輸
出;
J、從常規(guī)區(qū)域獲得緩存數(shù)據(jù),進(jìn)行輸出。緩存中的常規(guī)區(qū)域和映射區(qū)域設(shè)置有過期時間,過期時間到達(dá)時,刪除常規(guī)區(qū)域 和映射區(qū)域的所有數(shù)據(jù)。步驟F中,獲取需要訪問的數(shù)據(jù)集合后,將返回步驟A。步驟I中,獲取需要訪問的數(shù)據(jù)集合后,將返回步驟A。采用了本發(fā)明的技術(shù)方案,將緩存通過簡單的方式進(jìn)行了映射索引,使得緩存可 被實(shí)時更新,在作更新判斷的時候,先依靠微小的映射緩存,繼而依靠簡單的變量存在判 斷,來解決在緩存體系下的實(shí)時校驗,僅帶來微不足道的性能消耗。在緩存、實(shí)時性、性能這 三者之間找到一個平衡點(diǎn),在兼顧訪問性能的同時,依靠緩存體系,來實(shí)現(xiàn)可索引的緩存, 解決了涉及內(nèi)容安全性等需要及時更新內(nèi)容時的棘手技術(shù)問題。


圖1是現(xiàn)有技術(shù)中包含單條內(nèi)容的緩存數(shù)據(jù)結(jié)構(gòu)圖; 圖2是現(xiàn)有技術(shù)中包含多條內(nèi)容的集合型緩存數(shù)據(jù)結(jié)構(gòu)圖; 圖3是本發(fā)明具體實(shí)施方式
中數(shù)據(jù)庫緩存的流程圖。圖4是本發(fā)明具體實(shí)施方式
中數(shù)據(jù)庫緩存中映射區(qū)域的數(shù)據(jù)結(jié)構(gòu)圖。
圖5是本發(fā)明具體實(shí)施方式
中數(shù)據(jù)庫緩存中更新區(qū)域的數(shù)據(jù)結(jié)構(gòu)圖。
具體實(shí)施例方式下面結(jié)合附圖并通過具體實(shí)施方式
來進(jìn)一步說明本發(fā)明的技術(shù)方案。本發(fā)明技術(shù)方案的主要思想是在大規(guī)模數(shù)據(jù)體系中,在確保使用緩存系統(tǒng)的前提 下,面對集合型緩存數(shù)據(jù),讓需要及時更新的內(nèi)容能夠從龐大的緩存體系中被迅速定位到, 并能夠完成所有與之相關(guān)的緩存數(shù)據(jù)的更新。在這一前提下,還要確保緩存體系自身的緩 存效率不受明顯影響,做到緩存和及時兩個看似矛盾的詞語的良好平衡性。
本發(fā)明技術(shù)方案要在原有緩存數(shù)據(jù)之外,再建立兩個新的緩存區(qū)域,一共通過三個緩 存區(qū)域,建立基于緩存的數(shù)據(jù)映射關(guān)系,來快速高效的解決這一問題。圖3是本發(fā)明具體實(shí)施方式
中數(shù)據(jù)庫緩存的流程圖。如圖3所示,該數(shù)據(jù)庫緩存 流程包括以下步驟
步驟101、數(shù)據(jù)庫生成一條緩存時,將緩存數(shù)據(jù)存放在緩存中的常規(guī)區(qū)域,緩存數(shù)據(jù)包 括一個列表請求的所有內(nèi)容。如圖2所示,稱之為常規(guī)區(qū)域。步驟102、生成包含所有內(nèi)容的唯一標(biāo)識符的數(shù)組數(shù)據(jù),存放在緩存中的映射區(qū) 域,該數(shù)組數(shù)據(jù)的鍵值與緩存數(shù)據(jù)的鍵值對應(yīng)。如圖4所示,稱之為映射區(qū)域。圖4采用跟 圖2相似的命名規(guī)則生成Key,例如list_l對應(yīng)mapper_l,然后其Value為list_l緩存中 所包含內(nèi)容的ID組成的一個數(shù)組。當(dāng)生成一條新的緩存時,應(yīng)用程序會將緩存的常規(guī)數(shù)據(jù)按照通常用法,存放在數(shù) 據(jù)區(qū),保存了這一個列表請求的所有內(nèi)容的數(shù)據(jù)集合,同時,會在建立緩存時,同時按照這 些內(nèi)容的ID,生成映射區(qū)域,其包含了所有這些ID組成的數(shù)組。例如“體育頻道下的最新 10條內(nèi)容”,包含10條ID依次為1-10的內(nèi)容,按照特定規(guī)則,其映射區(qū)域的緩存key為 mapper_st 10, value 為數(shù)組 Array (1,2,3,4,5,6,7,8,9,10),而其常規(guī)區(qū)域的 key 為 list_ stlO,同映射區(qū)的key相比,兩者之間的命名存在相似性,常規(guī)區(qū)域的該緩存value為這10 條內(nèi)容的完整數(shù)據(jù)。緩存中的常規(guī)區(qū)域和映射區(qū)域設(shè)置有過期時間,過期時間到達(dá)時,刪除常規(guī)區(qū)域 和映射區(qū)域的所有數(shù)據(jù),來保證在正常情況下數(shù)據(jù)的更新和銷毀回收。步驟103、需要更新或者刪除一條內(nèi)容時,建立一個值為空的數(shù)據(jù),存放在緩存中 的更新區(qū)域,空值數(shù)據(jù)的鍵值包含該條內(nèi)容的唯一標(biāo)識符。如圖5所示,需要及時更新或者刪除某條數(shù)據(jù)時,在更新區(qū)域建立一個值為空的 緩存,例如ID為1的內(nèi)容需要緊急刪除,則在更新區(qū)域會增加一個緩存,key為id_l,值為 Null。步驟104、當(dāng)訪問數(shù)據(jù)集合時,根據(jù)命名規(guī)則生成數(shù)據(jù)集合對應(yīng)的鍵值。應(yīng)用程序要訪問某個數(shù)據(jù)集合時,根據(jù)特定的命名規(guī)則生成一個key值,例如仍 然是訪問“體育頻道下的最新10條內(nèi)容”,則應(yīng)用程序首先訪問mapper_StlO。步驟105、查找映射區(qū)域,判斷是否存在與數(shù)據(jù)集合對應(yīng)的鍵值相同的鍵值,如果 不存在,則轉(zhuǎn)至步驟106,如果存在,則轉(zhuǎn)至步驟107。步驟106、確認(rèn)緩存中沒有需要訪問的數(shù)據(jù)集合,訪問數(shù)據(jù)庫,獲取需要訪問的數(shù) 據(jù)集合,進(jìn)行輸出。獲取需要訪問的數(shù)據(jù)集合后,將返回步驟101。
5
如果不存在mapper_StlO,則認(rèn)定為該緩存不存在,直接跳過緩存去正常訪問數(shù)據(jù) 庫,按照數(shù)據(jù)庫請求獲得所需數(shù)據(jù),并創(chuàng)建緩存,同時輸出數(shù)據(jù)。步驟107、從映射區(qū)域取出鍵值對應(yīng)的數(shù)組,獲得數(shù)組包含的所述所有內(nèi)容的唯一 標(biāo)識符。若存在mapper_StlO,則取出其值(Value),由于它的值是一個非常小的數(shù)組,且 從緩存中取出,因此性能消耗極低。接著程序利用從值中得到的ID組成的數(shù)組,來分別判 斷更新情況,例如mapper_stlO的值是Array (1,2,3,4,5,6,7,8,9,10),我們則需要依次判 斷1-10這10條內(nèi)容在更新區(qū)域是否存在。步驟108、根據(jù)所述所有內(nèi)容的唯一標(biāo)識符,逐個判斷在更新區(qū)域中是否存在與唯 一標(biāo)識符相同的鍵值,如果存在,則轉(zhuǎn)至步驟109,如果不存在,則轉(zhuǎn)至步驟110。訪問更新區(qū),判斷key是否存在,由于更新區(qū)僅僅保存了一些空值的數(shù)據(jù),且我們 并不讀取這些數(shù)據(jù),僅僅做是否存在判斷——例如使用iSSet($id_l)來判斷ID為1的內(nèi) 容是否需要作過期處理,這一判斷同樣性能消耗極低。步驟109、刪除常規(guī)區(qū)域中的所述緩存數(shù)據(jù),訪問數(shù)據(jù)庫,獲取需要訪問的數(shù)據(jù)集 合,進(jìn)行輸出。獲取需要訪問的數(shù)據(jù)集合后,將返回步驟101。若更新區(qū)存在該值,則緩存過期,刪除緩存后去訪問數(shù)據(jù)庫,并創(chuàng)建新的緩存,輸 出數(shù)據(jù)。步驟110、從常規(guī)區(qū)域獲得緩存數(shù)據(jù),進(jìn)行輸出。若更新區(qū)不存在,表明沒有數(shù)據(jù)過期,則正常去訪問常規(guī)緩存區(qū)域,取出數(shù)據(jù),并 予以輸出。以上所述,僅為本發(fā)明較佳的具體實(shí)施方式
,但本發(fā)明的保護(hù)范圍并不局限于此, 任何熟悉該技術(shù)的人在本發(fā)明所揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋 在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
權(quán)利要求
1. 一種數(shù)據(jù)庫緩存的方法,其特征在于,包括以下步驟A、數(shù)據(jù)庫生成一條緩存時,將緩存數(shù)據(jù)存放在緩存中的常規(guī)區(qū)域,緩存數(shù)據(jù)包括一個 列表請求的所有內(nèi)容;B、生成包含所述所有內(nèi)容的唯一標(biāo)識符的數(shù)組數(shù)據(jù),存放在緩存中的映射區(qū)域,所述 數(shù)組數(shù)據(jù)的鍵值與所述緩存數(shù)據(jù)的鍵值對應(yīng);C、需要更新或者刪除一條內(nèi)容時,建立一個值為空的數(shù)據(jù),存放在緩存中的更新區(qū)域, 所述空值數(shù)據(jù)的鍵值包含所述一條內(nèi)容的唯一標(biāo)識符;D、當(dāng)訪問數(shù)據(jù)集合時,根據(jù)命名規(guī)則生成數(shù)據(jù)集合對應(yīng)的鍵值;E、查找映射區(qū)域,判斷是否存在與數(shù)據(jù)集合對應(yīng)的鍵值相同的鍵值,如果不存在,則轉(zhuǎn) 至步驟F,如果存在,則轉(zhuǎn)至步驟G ;F、確認(rèn)緩存中沒有需要訪問的數(shù)據(jù)集合,訪問數(shù)據(jù)庫,獲取需要訪問的數(shù)據(jù)集合,進(jìn)行 輸出;G、從映射區(qū)域取出鍵值對應(yīng)的數(shù)組,獲得數(shù)組包含的所述所有內(nèi)容的唯一標(biāo)識符;H、根據(jù)所述所有內(nèi)容的唯一標(biāo)識符,逐個判斷在更新區(qū)域中是否存在與唯一標(biāo)識符相 同的鍵值,如果存在,則轉(zhuǎn)至步驟I,如果不存在,則轉(zhuǎn)至步驟J ;I、刪除常規(guī)區(qū)域中的所述緩存數(shù)據(jù),訪問數(shù)據(jù)庫,獲取需要訪問的數(shù)據(jù)集合,進(jìn)行輸出;J、從常規(guī)區(qū)域獲得緩存數(shù)據(jù),進(jìn)行輸出。
2.根據(jù)權(quán)利要求1所述的一種數(shù)據(jù)庫緩存的方法,其特征在于,緩存中的常規(guī)區(qū)域和 映射區(qū)域設(shè)置有過期時間,過期時間到達(dá)時,刪除常規(guī)區(qū)域和映射區(qū)域的所有數(shù)據(jù)。
3.根據(jù)權(quán)利要求1所述的一種數(shù)據(jù)庫緩存的方法,其特征在于,步驟F中,獲取需要訪 問的數(shù)據(jù)集合后,將返回步驟A。
4.根據(jù)權(quán)利要求1所述的一種數(shù)據(jù)庫緩存的方法,其特征在于,步驟I中,獲取需要訪 問的數(shù)據(jù)集合后,將返回步驟A。
全文摘要
本發(fā)明公開了一種數(shù)據(jù)庫緩存的方法,在原有緩存數(shù)據(jù)之外,再建立兩個新的緩存區(qū)域,一共通過三個緩存區(qū)域,建立基于緩存的數(shù)據(jù)映射關(guān)系,在大規(guī)模數(shù)據(jù)體系中,在確保使用緩存系統(tǒng)的前提下,面對集合型緩存數(shù)據(jù),讓需要及時更新的內(nèi)容能夠從龐大的緩存體系中被迅速定位到,并能夠完成所有與之相關(guān)的緩存數(shù)據(jù)的更新。
文檔編號G06F17/30GK102117338SQ20111008344
公開日2011年7月6日 申請日期2011年4月2日 優(yōu)先權(quán)日2011年4月2日
發(fā)明者官文吉 申請人:天脈聚源(北京)傳媒科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
孝昌县| 临清市| 白沙| 九寨沟县| 永安市| 门头沟区| 车险| 厦门市| 湘阴县| 大安市| 祁门县| 自治县| 壤塘县| 巫溪县| 玉山县| 屯门区| 青海省| 绍兴市| 乃东县| 太仆寺旗| 察雅县| 太仓市| 郓城县| 永登县| 太保市| 泽普县| 溧水县| 板桥市| 全椒县| 潼关县| 淳安县| 九龙县| 二手房| 平乐县| 阳泉市| 石狮市| 卫辉市| 民乐县| 九龙县| 平南县| 北辰区|