專利名稱:數(shù)據(jù)緩存方法和裝置的制作方法
技術領域:
本發(fā)明涉及數(shù)據(jù)存儲技術,尤其涉及一種數(shù)據(jù)緩存方法和裝置。
背景技術:
隨著數(shù)據(jù)庫技術的不斷成熟,數(shù)據(jù)庫的存儲量日趨巨大,從而可以為用戶 提供更加豐富的數(shù)據(jù)服務,用戶可從數(shù)據(jù)庫中獲取所需的數(shù)據(jù)。實際應用中, 對于用戶需求量大的系統(tǒng),如一個日訪問量達到百萬級的網(wǎng)站,由于每個用戶 的愛好、需求不盡相同,在單位時間內,需要處理大量的數(shù)據(jù)分析和訪問工作, 對系統(tǒng)性能和用戶瀏覽速度也會造成影響,給用戶的數(shù)據(jù)瀏覽造成瓶頸。
為解決上述問題,現(xiàn)有技術將用戶需要瀏覽的數(shù)據(jù)初始化到內存中緩存起 來,用戶訪問網(wǎng)站時可從內存中獲取數(shù)據(jù)。現(xiàn)有技術的數(shù)據(jù)緩存方式如圖1所 示,將數(shù)據(jù)庫中所存儲的用戶終端需要瀏覽的數(shù)據(jù)初始化到內存中進行緩存, 當數(shù)據(jù)庫中的數(shù)據(jù)發(fā)生更新時,通過外部接口對內存中的相應數(shù)據(jù)進行刷新, 用戶終端向頁面發(fā)送訪問請求后,頁面從內存中獲取用戶終端所需數(shù)據(jù)進行加 載,然后將加載的數(shù)據(jù)返回給用戶終端?,F(xiàn)有技術的數(shù)據(jù)緩存方式可提高用戶 終端瀏覽速度,但是由于內存資源始終是有限的,當數(shù)據(jù)量非常大的時候,容
易造成內存資源不足,導致系統(tǒng)的穩(wěn)定性降低;也常會出現(xiàn)內存中的一部分數(shù) 據(jù)始終不被用戶終端瀏覽的情況,導致內存資源的使用混亂,造成內存資源的 浪費,使得內存的使用效率較低。
發(fā)明內容
有鑒于此,本發(fā)明的主要目的在于提供一種數(shù)據(jù)緩存方法和裝置,以解決 現(xiàn)有技術的數(shù)據(jù)緩存方法對內存的使用效率較低的問題。 為達到上述目的,本發(fā)明的技術方案是這樣實現(xiàn)的本發(fā)明提供了一種數(shù)據(jù)緩存方法,包括
記錄內存中所存儲各數(shù)據(jù)的容量大小、刷新次數(shù)和命中次數(shù)中的至少 一種
信息;
根據(jù)設置的量化指標以及所記錄的信息對所述內存數(shù)據(jù)進行清理。 所述量化指標為內存存儲空間上限和數(shù)據(jù)命中次數(shù)下限中的至少 一種。
所述對內存數(shù)據(jù)進行清理為根據(jù)所記錄內存各數(shù)據(jù)的容量大小得到所述 內存中存儲數(shù)據(jù)的總容量大小;將所述數(shù)據(jù)總容量大小與所設置量化指標中的 內存存儲空間上限進行比較;當數(shù)據(jù)總容量大小超出內存存儲空間上限時,將 所述內存中容量較大的數(shù)據(jù)卸載。
所述對內存數(shù)據(jù)進行清理為將所述各數(shù)據(jù)的命中次數(shù)與所設置量化指標 中的數(shù)據(jù)命中次數(shù)下限進行比較;根據(jù)比較結果將所述內存中命中次數(shù)低于命 中次數(shù)下限的數(shù)據(jù)卸載。
所述記錄內存中所存儲各數(shù)據(jù)的容量大小、刷新次數(shù)和命中次數(shù)中的至少 一種信息之后,該方法還包括對所記錄內存中各數(shù)據(jù)的信息進行比較,將容 量大、刷新次數(shù)高和命中次數(shù)高的數(shù)據(jù)靠前排列。
本發(fā)明還提供了一種數(shù)據(jù)緩存裝置,包括相互連接的信息記錄單元和數(shù) 據(jù)清理單元;其中,
所述信息記錄單元,用于記錄內存中所存儲數(shù)據(jù)的容量大小、刷新次數(shù)和 命中次數(shù)中的至少 一種信息提供給所述數(shù)據(jù)清理單元;
所述數(shù)據(jù)清理單元,用于根據(jù)設置的量化指標以及所記錄的信息對所述內 存數(shù)據(jù)進行清理。
所述數(shù)據(jù)清理單元進一步包括數(shù)據(jù)總容量獲取子單元、比較子單元和數(shù) 據(jù)卸載子單元;其中,
所述數(shù)據(jù)總容量獲取子單元,用于根據(jù)所記錄內存各數(shù)據(jù)的容量大小得到 所述內存中存儲數(shù)據(jù)的總容量大小提供給所述比較子單元;
所述比較子單元,用于將所述數(shù)據(jù)總容量大小和各數(shù)據(jù)的命中次數(shù),分別 與所設置量化指標中的內存存儲空間上限和數(shù)據(jù)命中次數(shù)下限進行比較,并將
5比較結果提供給所述數(shù)據(jù)卸載子單元;
所述數(shù)據(jù)卸載子單元,用于根據(jù)比較結果將所述內存中命中次數(shù)低于命中 次數(shù)下限的數(shù)據(jù),和數(shù)據(jù)總容量大小超出內存存儲空間上限時容量較大的數(shù)據(jù) 卸載。
所述裝置還包括排序單元,連接所述信息記錄單元,用于對所述內存中 的數(shù)據(jù)進行排列,將容量大、刷新次數(shù)高和命中次數(shù)高的數(shù)據(jù)靠前排列。
本發(fā)明所提供的數(shù)據(jù)緩存方法和裝置,通過配置內存的量化指標,根據(jù)量 化指標對內存的存儲空間大小進行控制;通過記錄內存中數(shù)據(jù)容量大小、刷新 次數(shù)和命中次數(shù),當內存的存儲空間達到上限時,將內存中容量大的數(shù)據(jù)卸載, 并通過腐爛搜索將用戶終端訪問量少的數(shù)據(jù)卸載,從而減少了內存資源損耗, 提高了內存的使用效率和系統(tǒng)的穩(wěn)定性。
圖1為現(xiàn)有技術的數(shù)據(jù)緩存示意圖2為本發(fā)明 一種數(shù)據(jù)緩存方法的流程圖3為本發(fā)明實施例的網(wǎng)站訪問系統(tǒng)的數(shù)據(jù)緩存示意圖4為本發(fā)明實施例的數(shù)據(jù)緩存方法的流程圖5為本發(fā)明一種數(shù)據(jù)緩存裝置的組成結構示意圖。
具體實施例方式
下面結合附圖和具體實施例對本發(fā)明的技術方案進一步詳細闡述。 如圖2所示,圖2為本發(fā)明一種數(shù)據(jù)緩存方法的流程圖,主要包括以下步
驟
步驟201,記錄內存中所存儲各數(shù)據(jù)的容量大小、刷新次數(shù)和命中次數(shù)中 的至少一種信息。
所謂容量大小是指數(shù)據(jù)所需占用內存的存儲空間大小,當內存從數(shù)據(jù)庫中 獲取數(shù)據(jù)時,即記錄下對應數(shù)據(jù)的容量大??;所謂刷新是指數(shù)據(jù)庫中的數(shù)據(jù)發(fā)
6生更新時,數(shù)據(jù)庫通過外部接口對內存中的對應數(shù)據(jù)進行更新的過程,內存中 數(shù)據(jù)每更新一次,則記錄的對應數(shù)據(jù)的刷新次數(shù)就增加一;所謂命中次數(shù)是指 用戶終端對內存中數(shù)據(jù)的調用次數(shù),內存中數(shù)據(jù)每被調用一次,則記錄的對應 數(shù)據(jù)的命中次數(shù)增加一。內存對上述各數(shù)據(jù)的容量大小、刷新次數(shù)和命中次數(shù) 中的至少 一種信息進行記錄并存儲。
步驟202,根據(jù)設置的量化指標以及所記錄的信息對內存數(shù)據(jù)進行清理。 用戶可根據(jù)實際需要設置量化指標,并將所設置的量化指標以配置文件的 形式存儲在內存中,以供內存讀取。量化指標中規(guī)定了內存中可用來存儲數(shù)據(jù) 的存儲空間上限和數(shù)據(jù)命中次數(shù)下限等信息中的至少 一種,所謂存儲空間上限 是指可用來進行數(shù)據(jù)存儲的最大存儲空間;所謂數(shù)據(jù)命中次數(shù)下限是指數(shù)據(jù)被 命中的最低次數(shù)。
數(shù)據(jù)清理的方式包括周期性清理和條件觸發(fā)清理等,周期性清理如通過 在內存中設置定時器,周期性的對內存所存數(shù)據(jù)進行腐爛搜索,將所存各數(shù)據(jù) 的命中次數(shù)與所設置量化指標中的數(shù)據(jù)命中次數(shù)下限進行比較,并根據(jù)比較結 果將命中次數(shù)低于命中次數(shù)下限的數(shù)據(jù)和/或刷新次數(shù)遠大于命中次數(shù)的數(shù)據(jù) 卸載;條件觸發(fā)清理如內存根據(jù)所記錄各數(shù)據(jù)的容量大小得到內存中存儲數(shù) 據(jù)的總容量大小,并將得到的數(shù)據(jù)總容量大小與所設置量化指標中的內存存儲 空間上限進行比較,在數(shù)據(jù)總容量大小超出內存存儲空間上限的條件下,將內 存中容量較大的數(shù)據(jù)卸載。
上述圖2所示的數(shù)據(jù)緩存方法適用于內存受限的系統(tǒng)中,如網(wǎng)站訪問系統(tǒng)。 下面以圖3所示的網(wǎng)站訪問系統(tǒng)為例,并結合圖4所示用戶終端訪問網(wǎng)站的過 程對本發(fā)明實施例的數(shù)據(jù)緩存方法進一步詳細描述,圖3所示的網(wǎng)站訪問系統(tǒng) 相比圖1所示現(xiàn)有技術的網(wǎng)站訪問系統(tǒng),增設了回收空間,用于內存中數(shù)據(jù)的 卸載,圖4所示實施例的數(shù)據(jù)緩存方法主要包括以下步驟
步驟401,讀取配置文件,申請數(shù)據(jù)存儲空間,初始化各個量化指標。
內存讀取配置文件,通過解析得到配置文件中的量化指標,并初始化各個 量化指標,量化指標中包括內存存儲空間上限和數(shù)據(jù)命中次數(shù)下限等信息。內
7存根據(jù)量化指標中的內存存儲空間上限申請數(shù)據(jù)存儲空間,將數(shù)據(jù)存儲空間劃 分為多個數(shù)據(jù)塊,用以對從數(shù)據(jù)庫中獲取的數(shù)據(jù)進行分塊存儲,各數(shù)據(jù)塊的存 儲空間可設為相同,也可設為不同。
步驟402,內存接收用戶終端發(fā)送的數(shù)據(jù)請求。
用戶終端通過訪問網(wǎng)站時,通過頁面向內存發(fā)送數(shù)據(jù)請求,該數(shù)據(jù)請求中 包括用戶終端需要訪問的數(shù)據(jù)信息。
步驟403,查找內存中是否存在用戶終端所需訪問的數(shù)據(jù),如果存在,則 將對應數(shù)據(jù)的命中次數(shù)加一,并轉到步驟408;如果不存在,則轉到步驟404。
步驟404,從數(shù)據(jù)庫中獲取用戶終端所需數(shù)據(jù),并將獲取的數(shù)據(jù)加載到內 存中,計算所獲取數(shù)據(jù)的容量大小。
步驟405,檢查數(shù)據(jù)總容量大小是否超過內存存儲空間上限,如果超過, 則轉到步驟406;否則,轉到步驟407。
內存根據(jù)所記錄各數(shù)據(jù)的容量大小得到內存中存儲數(shù)據(jù)的總容量大小,并 將得到的數(shù)據(jù)總容量大小與所設置量化指標中的內存存儲空間上限進行比較, 從而判斷數(shù)據(jù)總容量大小是否超過內存存儲空間上限。
步驟406,執(zhí)行空間限制清理。
內存將所存儲數(shù)據(jù)中容量較大的數(shù)據(jù)卸載,放入回收空間中,并將所卸載 數(shù)據(jù)占用的存儲空間釋放。
步驟407,設置所獲取數(shù)據(jù)的刷新次數(shù)和命中次數(shù)為零,并根據(jù)數(shù)據(jù)容量 大小、刷新次數(shù)和命中次數(shù)信息,將該數(shù)據(jù)插入到內存的數(shù)據(jù)列表中。
內存中所存數(shù)據(jù)是按照一定的原則進行排序,并以列表的形式進行存儲的。 排序的原則為首先比較各數(shù)據(jù)的容量大小,將各數(shù)據(jù)按照容量由大到小的順 序進行排列;如果存在容量大小相同的數(shù)據(jù),則進一步比較這些容量大小相同 數(shù)據(jù)的刷新次數(shù),將這些數(shù)據(jù)再按照刷新次數(shù)由高到低的順序進行排列;如果 還存在刷新次數(shù)相同的數(shù)據(jù),則進一步比較這些刷新次數(shù)相同數(shù)據(jù)的命中次數(shù), 將這些數(shù)據(jù)繼續(xù)按照命中次數(shù)由高到低的順序進行排列。需要指出的是,本發(fā) 明的內存數(shù)據(jù)排序原則并非僅僅局限于上述的排序原則,實際應用中可根據(jù)需要對排序原則進行設置。
對于內存新獲取的數(shù)據(jù),則按照上述的排序原則與數(shù)據(jù)列表中的數(shù)據(jù)進行 比較,并將新獲取的數(shù)據(jù)插入數(shù)據(jù)列表中的適當位置。
步驟408,內存將用戶終端所需數(shù)據(jù)返回給用戶終端。
另外,在上述圖4所示的實施例中,內存對所存數(shù)據(jù)進行定時腐爛搜索, 將各數(shù)據(jù)的命中次數(shù)與所設置量化指標中的數(shù)據(jù)命中次數(shù)下限進行比較,并根 據(jù)比較結果將內存中命中次數(shù)低于命中次數(shù)下限的數(shù)據(jù)和/或刷新次數(shù)遠大于 命中次數(shù)的數(shù)據(jù)卸載。
為實現(xiàn)上述本發(fā)明的數(shù)據(jù)緩存方法,本發(fā)明還提供了 一種數(shù)據(jù)緩存裝置,
如圖5所示,該裝置包括信息記錄單元100、數(shù)據(jù)清理單元200和排序單元 300。信息記錄單元100,用于記錄內存中所存儲數(shù)據(jù)的容量大小、刷新次數(shù)和 命中次數(shù)中的至少一種信息提供給數(shù)據(jù)清理單元200。數(shù)據(jù)清理單元200,連接 信息記錄單元100,用于根據(jù)設置的量化指標以及所記錄的信息對內存數(shù)據(jù)進 行清理。排序單元300,連接信息記錄單元100,用于對內存中的數(shù)據(jù)進行排列, 將容量大、刷新次數(shù)高和命中次數(shù)高的數(shù)據(jù)靠前排列。圖5所示的數(shù)據(jù)緩存裝 置設置于圖3所示系統(tǒng)的內存中。
其中,數(shù)據(jù)清理單元200進一步包括數(shù)據(jù)總容量獲取子單元210、比較 子單元220和數(shù)據(jù)卸載子單元230。數(shù)據(jù)總容量獲取子單元210,用于根據(jù)所記 錄內存各數(shù)據(jù)的容量大小得到內存中存儲數(shù)據(jù)的總容量大小提供給比較子單元 220。比較子單元220,連接數(shù)據(jù)總容量獲取子單元210,用于將數(shù)據(jù)總容量大 小和各數(shù)據(jù)的命中次數(shù),分別與所設置量化指標中的內存存儲空間上限和數(shù)據(jù)
命中次數(shù)下限進行比較,并將比較結果提供給數(shù)據(jù)卸載子單元230。數(shù)據(jù)卸載 子單元230,連接比較子單元220,用于根據(jù)比較結果將內存中命中次數(shù)低于命 中次數(shù)下限的數(shù)據(jù),和數(shù)據(jù)總容量大小超出內存存儲空間上限時容量較大的數(shù) 據(jù)卸載。
綜上所述,本發(fā)明的數(shù)據(jù)緩存方法和裝置,通過記錄內存中數(shù)據(jù)容量大小、 刷新次數(shù)和命中次數(shù),當內存的存儲空間達到上限時,將內存中容量大的數(shù)據(jù)
9卸載,并通過腐爛搜索將用戶終端訪問量少的數(shù)據(jù)卸載,從而減少了內存資源 損耗,提高了內存的使用效率和系統(tǒng)的穩(wěn)定性。
以上所述,僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。
權利要求
1、一種數(shù)據(jù)緩存方法,其特征在于,包括記錄內存中所存儲各數(shù)據(jù)的容量大小、刷新次數(shù)和命中次數(shù)中的至少一種信息;根據(jù)設置的量化指標以及所記錄的信息對所述內存數(shù)據(jù)進行清理。
2、 根據(jù)權利要求1所述數(shù)據(jù)緩存方法,其特征在于,所述量化指標為內存 存儲空間上限和數(shù)據(jù)命中次數(shù)下限中的至少 一種。
3、 根據(jù)權利要求l或2所述數(shù)據(jù)緩存方法,其特征在于,所述對內存數(shù)據(jù) 進行清理為根據(jù)所記錄內存各數(shù)據(jù)的容量大小得到所述內存中存儲數(shù)據(jù)的總 容量大小;將所述數(shù)據(jù)總容量大小與所設置量化指標中的內存存儲空間上限進 行比較;當數(shù)據(jù)總容量大小超出內存存儲空間上限時,將所述內存中容量較大 的數(shù)據(jù)卸載。
4、 根據(jù)權利要求l或2所述數(shù)據(jù)緩存方法,其特征在于,所述對內存數(shù)據(jù) 進行清理為將所述各數(shù)據(jù)的命中次數(shù)與所設置量化指標中的數(shù)據(jù)命中次數(shù)下載。
5、 根據(jù)權利要求1或2所述數(shù)據(jù)緩存方法,其特征在于,所述記錄內存中 所存儲各數(shù)據(jù)的容量大小、刷新次數(shù)和命中次數(shù)中的至少一種信息之后,該方 法還包括對所記錄內存中各數(shù)據(jù)的信息進行比較,將容量大、刷新次數(shù)高和 命中次數(shù)高的數(shù)據(jù)靠前排列。
6、 一種數(shù)據(jù)緩存裝置,其特征在于,包括相互連接的信息記錄單元和數(shù) 據(jù)清理單元;其中,所述信息記錄單元,用于記錄內存中所存儲數(shù)據(jù)的容量大小、刷新次數(shù)和 命中次數(shù)中的至少一種信息提供給所述數(shù)據(jù)清理單元;所述數(shù)據(jù)清理單元,用于根據(jù)設置的量化指標以及所記錄的信息對所述內 存數(shù)據(jù)進行清理。
7、 根據(jù)權利要求6所述數(shù)據(jù)緩存裝置,其特征在于,所述數(shù)據(jù)清理單元進一步包括數(shù)據(jù)總容量獲取子單元、比較子單元和數(shù)據(jù)卸載子單元;其中, 所述數(shù)據(jù)總容量獲取子單元,用于根據(jù)所記錄內存各數(shù)據(jù)的容量大小得到所述內存中存儲數(shù)據(jù)的總容量大小提供給所述比較子單元;所述比較子單元,用于將所述數(shù)據(jù)總容量大小和各數(shù)據(jù)的命中次數(shù),分別與所設置量化指標中的內存存儲空間上限和數(shù)據(jù)命中次數(shù)下限進行比較,并將比較結果提供給所述數(shù)據(jù)卸載子單元;所述數(shù)據(jù)卸載子單元,用于根據(jù)比較結果將所述內存中命中次數(shù)低于命中次數(shù)下限的數(shù)據(jù),和數(shù)據(jù)總容量大小超出內存存儲空間上限時容量較大的數(shù)據(jù)卸載。
8、 根據(jù)權利要求6或7所述數(shù)據(jù)緩存裝置,其特征在于,所述裝置還包括 排序單元,連接所述信息記錄單元,用于對所述內存中的數(shù)據(jù)進行排列,將容 量大、刷新次數(shù)高和命中次數(shù)高的數(shù)據(jù)靠前排列。
全文摘要
本發(fā)明公開了一種數(shù)據(jù)緩存方法,包括記錄內存中所存儲數(shù)據(jù)的容量大小、刷新次數(shù)和命中次數(shù)中的至少一種信息;根據(jù)設置的量化指標以及所記錄的信息對內存數(shù)據(jù)進行清理。本發(fā)明還提供了一種數(shù)據(jù)緩存裝置,通過配置內存的量化指標,根據(jù)量化指標對內存的存儲空間大小進行控制;通過記錄內存中數(shù)據(jù)容量大小、刷新次數(shù)和命中次數(shù),當內存的存儲空間達到上限時,將內存中容量大的數(shù)據(jù)卸載,并通過腐爛搜索將用戶終端訪問量少的數(shù)據(jù)卸載,從而減少了內存資源損耗,提高了內存的使用效率和系統(tǒng)的穩(wěn)定性。
文檔編號G06F17/30GK101493821SQ20081005691
公開日2009年7月29日 申請日期2008年1月25日 優(yōu)先權日2008年1月25日
發(fā)明者葉小偉 申請人:中興通訊股份有限公司