數據存儲方法及裝置的制造方法
【專利摘要】本發明公開了一種數據存儲方法及裝置,屬于數據處理技術領域。所述方法包括:創建待加入內存緩存中的數據單元,內存緩存中的數據單元以雙向鏈表的方式進行存儲;判斷雙向鏈表中的數據單元的個數是否達到預設數量;若雙向鏈表中的數據單元的個數達到預設數量,將雙向鏈表中最后一個數據單元刪除,最后一個數據單元為最近被訪問次數最少的數據單元;將創建的數據單元存儲至雙向鏈表最前面的位置。在雙向鏈表中的數據單元的個數達到預設數量時,通過將雙向鏈表中最后一個數據單元刪除,即刪除最近使用次數最少的數據單元,以為可能被訪問多次的數據單元留下存儲空間。因此,內存緩存的利用率較高。
【專利說明】
數據存儲方法及裝置
技術領域
[0001] 本發明設及數據處理技術領域,特別設及一種數據存儲方法及裝置。
【背景技術】
[0002] 隨著科技的快速發展,使用終端處理數據的用戶越來越多。終端在對數據處理前, 通常需要在內存緩存中對數據進行存儲。例如,終端在接收到服務器發送的網絡數據時,通 常會將接收到的網絡數據在內存緩存中進行存儲,W便于后續快速讀取網絡數據。由于內 存緩存的大小有限,內存緩存中數據存儲的方式影響著內存緩存的利用率,而內存緩存的 利用率影響著讀寫數據的性能。因此,如何對數據進行存儲是提高讀寫數據性能的關鍵。
[0003] 相關技術中提供了一種數據存儲方法,在該方法中,創建待加入內存緩存中的數 據單元,數據單元中包括待處理的信息,如文本或圖片信息等。若內存緩存被占滿,則隨機 刪除內存緩存中已保存的數據單元W釋放存儲空間,從而在留出存儲空間后,在內存緩存 中保存新創建的數據單元。
[0004] 在實現本發明的過程中,發明人發現上述方法至少存在W下問題:
[0005] 由于當內存緩存被占滿時,會隨機刪除數據單元,從而使得內存緩存中可能會被 多次訪問的數據單元被刪除后,需重新創建該數據單元并保存。因此,內存緩存的利用率較 低。
【發明內容】
[0006] 為了解決相關技術的問題,本發明實施例提供了一種數據存儲方法及裝置,所述 技術方案如下:
[0007] -方面,提供了一種數據存儲方法,所述方法包括:
[0008] 創建待加入內存緩存中的數據單元,所述內存緩存中的數據單元W雙向鏈表的方 式進行存儲;
[0009] 判斷所述雙向鏈表中的數據單元的個數是否達到預設數量;
[0010] 若所述雙向鏈表中的數據單元的個數達到預設數量,將所述雙向鏈表中最后一個 數據單元刪除,所述最后一個數據單元為最近被訪問次數最少的數據單元;
[0011] 將創建的數據單元存儲至所述雙向鏈表最前面的位置。
[0012] 另一方面,提供了一種數據存儲裝置,所述裝置包括:
[0013] 創建模塊,用于創建待加入內存緩存中的數據單元,所述內存緩存中的數據單元 W雙向鏈表的方式進行存儲;
[0014] 第一判斷模塊,用于判斷所述雙向鏈表中的數據單元的個數是否達到預設數量;
[0015] 第一刪除模塊,用于當所述雙向鏈表中的數據單元的個數達到預設數量時,將所 述雙向鏈表中最后一個數據單元刪除,所述最后一個數據單元為最近被訪問次數最少的數 據單元;
[0016] 存儲模塊,用于將創建的數據單元存儲至所述雙向鏈表最前面的位置。
[0017] 本發明實施例提供的技術方案帶來的有益效果是:
[0018] 通過判斷雙向鏈表中的數據單元的個數是否達到預設數量,并在雙向鏈表中的數 據單元的個數達到預設數量時,將雙向鏈表中最后一個數據單元刪除,即刪除最近使用次 數最少的數據單元,從而將創建的數據單元存儲至雙向鏈表最前面的位置,為可能被訪問 多次的數據單元留下存儲空間。因此,內存緩存的利用率較高。
【附圖說明】
[0019] 為了更清楚地說明本發明實施例中的技術方案,下面將對實施例描述中所需要使 用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于 本領域普通技術人員來講,在不付出創造性勞動的前提下,還可W根據運些附圖獲得其他 的附圖。
[0020] 圖1是本發明一實施例示出的一種數據存儲方法流程圖;
[0021] 圖2是本發明另一實施例示出的一種數據存儲方法流程圖;
[0022] 圖3是本發明另一實施例示出的一種數據單元的結構示意圖;
[0023] 圖4是本發明另一實施例不出的一種雙向鏈表的結構不意圖;
[0024] 圖5是本發明另一實施例示出的一種數據存儲裝置的結構示意圖;
[00巧]圖6是本發明另一實施例示出的一種數據存儲裝置的結構示意圖;
[00%]圖7是本發明另一實施例示出的一種數據存儲裝置的結構示意圖;
[0027] 圖8是本發明另一實施例示出的一種數據存儲裝置的結構示意圖;
[0028] 圖9是本發明另一實施例示出的一種數據存儲裝置的結構示意圖;
[0029] 圖10是本發明另一實施例示出的一種數據存儲裝置的結構示意圖;
[0030] 圖11是本發明另一實施例示出的一種終端的結構示意圖。
【具體實施方式】
[0031] 為使本發明的目的、技術方案和優點更加清楚,下面將結合附圖對本發明實施方 式作進一步地詳細描述。
[0032] 由于相關技術中在存儲數據時,若內存緩存被占滿,會隨機刪除內存緩存中已保 存的數據單元W釋放存儲空間,從而在留出存儲空間后,在內存緩存中保存新創建的數據 單元,從而使得內存緩存中可能會被多次訪問的數據單元被刪除后,需重新創建該數據單 元并保存。因此,內存緩存的利用率較低。
[0033] 為了預防上述情況,提高內存緩存的利用率,本發明實施例提供了一種數據存儲 方法,參見圖1,本實施例提供的方法流程包括:
[0034] 101、創建待加入內存緩存中的數據單元,內存緩存中的數據單元W雙向鏈表的方 式進行存儲。
[0035] 102、判斷雙向鏈表中的數據單元的個數是否達到預設數量。
[0036] 103、若雙向鏈表中的數據單元的個數達到預設數量,將雙向鏈表中最后一個數據 單元刪除,最后一個數據單元為最近被訪問次數最少的數據單元。
[0037] 104、將創建的數據單元存儲至雙向鏈表最前面的位置。
[0038] 本發明實施例提供的方法,通過判斷雙向鏈表中的數據單元的個數是否達到預設 數量,并在雙向鏈表中的數據單元的個數達到預設數量時,將雙向鏈表中最后一個數據單 元刪除,即刪除最近使用次數最少的數據單元,從而將創建的數據單元存儲至雙向鏈表最 前面的位置,為可能被訪問多次的數據單元留下存儲空間。因此,內存緩存的利用率較高。
[0039] 作為一種可選實施例,將創建的數據單元存儲至雙向鏈表最前面的位置之前,還 包括: W40] 判斷創建的數據單元占用的存儲空間是否大于第一預設闊值;
[0041] 若創建的數據單元占用的存儲空間不大于第一預設闊值,則執行將創建的數據單 元存儲至雙向鏈表最前面的位置的步驟。
[0042] 作為一種可選實施例,該方法還包括:
[0043] 每隔預設周期檢測雙向鏈表占用的存儲空間;
[0044] 若雙向鏈表占用的存儲空間大于第二預設闊值,按照從后往前的順序,對雙向鏈 表中的數據單元進行刪除,直到雙向鏈表占用的存儲空間不大于第Ξ預設闊值,第Ξ預設 闊值小于第二預設闊值。
[0045] 作為一種可選實施例,將創建的數據單元存儲至雙向鏈表最前面的位置之后,還 包括:
[0046] 根據創建的數據單元,生成創建的數據單元的序列號;
[0047] 根據創建的數據單元在內存緩存中的存儲地址,定義對應的引用;
[0048] 建立創建的數據單元的序列號及引用之間的映射關系,得到索引信息; W例將索引信息保存至索引信息表中。
[0050] 作為一種可選實施例,該方法還包括:
[0051] 獲取數據訪問請求,數據訪問請求中至少包含序列號; 陽0巧根據數據訪問請求中的序列號,在索引信息表中進行查詢,得到對應的引用;
[005引根據查詢到的引用,訪問雙向鏈表中對應的數據單元。
[0054] 作為一種可選實施例,該方法還包括: 陽化5] 當檢測到雙向鏈表中的任一數據單元被訪問時,將任一數據單元移動至雙向鏈表 最前面的位置。
[0056] 上述所有可選技術方案,可W采用任意結合形成本發明的可選實施例,在此不再 --寶述。
[0057] 本發明實施例提供了一種數據存儲方法,參見圖2,本實施例提供的方法流程包 括:
[005引 201、創建待加入內存緩存中的數據單元,內存緩存中的數據單元W雙向鏈表的方 式進行存儲。
[0059] 由于內存緩存中的數據單元W雙向鏈表的方式進行存儲,因此,在創建待加入內 存緩存中的數據單元時,可按照雙向鏈表中節點的結構,創建數據單元,本實施例對此不作 具體限定。
[0060] 雙向鏈表中的節點可包括但不限于由網絡數據、前向數據引用及后向數據引用組 成,本實施例對此不作具體限定。其中,雙向鏈表中每個節點為一個數據單元。數據單元中 的前向數據引用用于指向雙向鏈表中該數據單元的前一個數據單元,數據單元中的后向數 據引用用于指向雙向鏈表中該數據單元的后一個數據單元,網絡數據可W為從網絡服務器 中獲取的文本信息或圖片鏈接等,本實施例不對網絡數據的內容作具體限定。
[0061] 需要說明的是,本步驟201中的數據引用記錄的是數據單元在內存緩存中的存儲 地址,用于指向數據單元。在創建的數據單元中的前向數據引用,所記錄的是雙向鏈表中該 創建的數據單元的前一個數據單元在內存緩存中的存儲地址。在創建的數據單元中的后向 數據引用,所記錄的是雙向鏈表中該創建的數據單元的后一個數據單元在內存緩存中的存 儲地址。
[0062] 例如,數據單元可W為如圖3所示的結構,數據單元構成的雙向鏈表可為如圖4所 示的結構。
[0063] 202、判斷雙向鏈表中的數據單元的個數是否達到預設數量。
[0064] 在判斷雙向鏈表中的數據單元的個數是否達到預設數量之前,可預先設置用于統 計雙向鏈表中的數據單元個數的變量,將該變量初始值設置為0。當檢測到數據單元加入雙 向鏈表時,將該變量的值加1。本實施例不對判斷雙向鏈表中的數據單元的個數是否達到預 設數量的方式作具體限定,包括但不限于:將該變量與預設數量比較;若該變量的值不小 于預設數量,則確定雙向鏈表中數據單元的個數達到了預設數量;反之,則確定雙向鏈表中 數據單元的個數未達到預設數量。其中,預設數量對應的數值可根據需求進行設置,本實施 例對此不作具體限定。 W65] 由于內存緩存中的存儲空間通常有限,而數據單元占用的存儲空間通常維持在一 個固定范圍之內。當占用存儲空間較大的數據單元存儲至內存緩存中時,內存緩存中相對 留給其它數據單元的存儲空間也就變少了,而占用存儲空間較大的數據單元被訪問的次數 通常較少,進而導致內存緩存中存儲空間的利用率較低。因此,為了提高內存緩存中存儲空 間的利用率,在將創建的數據單元添加至雙向鏈表最前面的位置之前,還可W判斷創建的 數據單元占用的存儲空間是否大于第一預設闊值。若創建的數據單元占用的存儲空間不大 于第一預設闊值,則執行將創建的數據單元添加至雙向鏈表最前面的位置的步驟。其中,第 一預設闊值可根據需求進行設置,本實施例對此不作具體限定。根據經驗,可將第一預設闊 值設置為64邸化iloB5rte,千字節)。
[0066] 203、若雙向鏈表中的數據單元的個數達到預設數量,將雙向鏈表中最后一個數據 單元刪除,最后一個數據單元為最近使用次數最少的數據單元。
[0067] 由于雙向鏈表中數據單元的前向數據引用指向該數據單元的前一個數據單元,后 向數據引用指向該數據單元的后一個數據單元,而雙向鏈表中的第一個數據單元由于前面 沒有其它的數據單元,第一個數據單元中的前向數據引用為空,不指向任何數據單元。同 理,雙向鏈表中的最后一個數據單元由于后續沒有其它的數據單元,則最后一個數據單元 中的后向數據引用為空,不指向任何數據單元。因此,為了便于對雙向鏈表進行操作,可在 雙向鏈表中創建一個表頭及表尾,本實施例對此不作具體限定。其中,表頭及表尾可與數據 單元具有相同的數據結構,添加表頭及表尾的雙向鏈表可如圖4所示。
[0068] W上述內容為基礎,本實施例不對將雙向鏈表中最后一個數據單元刪除的方式作 具體限定,包括但不限于:將表尾的前向數據引用指向雙向鏈表中最后一個數據單元的前 一個數據單元,將雙向鏈表中最后一個數據單元的前一個數據單元的后向數據引用指向表 尾;釋放最后一個數據單元的存儲空間。
[0069] 需要說明的是,由于后續需對雙向鏈表中的數據單元進行訪問,而在一次訪問過 程中,本次被訪問的數據單元有很大概率在后續訪問過程中,繼續被訪問。因此,當檢測 到雙向鏈表中的任一數據單元被訪問時,可將該任一數據單元移動至雙向鏈表最前面的位 置,本實施例對此不作具體限定。通過上述對數據單元在雙向鏈表中的位置調動過程,最 近被訪問次數較少的數據單元會處于雙向鏈表中靠后的位置,最近被訪問次數較多的數據 單元會處于雙向鏈表中靠前的位。即被訪問概率低的數據單元會處于雙向鏈表中靠后的位 置,被訪問概率高的數據單元會處于雙向鏈表中靠前的位置,從而通過數據單元在雙向鏈 表中的位置,能夠有效區分哪些數據單元是訪問概率高的數據單元,哪些數據單元是訪問 概率低的數據單元。其中,雙向鏈表中的最后一個數據單元為最近被訪問次數最少的數據 單元,也為被訪問概率最低的數據單元。
[0070] 通過上述刪除過程,能夠避免被訪問概率高的數據單元被刪除,從而重新創建該 數據單元并保存的過程。在提高內存緩存利用率的同時,還提高了訪問雙向鏈表中數據單 元的速度。 陽071] 204、將創建的數據單元添加至雙向鏈表最前面的位置。
[0072] W上述步驟203中的內容為基礎,本實施例不對將創建的數據單元添加至雙向鏈 表最前面的位置的方式作具體限定,包括但不限于:將當前雙向鏈表中的表頭后面的數據 單元的前向數據引用指向創建的數據單元,將創建的數據單元的后向數據引用指向當前雙 向鏈表中的表頭后面的數據單元,將表頭的后向數據引用指向創建的數據單元,將創建的 數據單元的前向數據引用指向表頭。
[0073] 另外,由于上述步驟201至204是在雙向鏈表中的數據單元的個數達到預設數量 的條件下,在雙向鏈表添加數據單元的過程。而在實際操作過程中,在雙向鏈表中添加數據 單元時,雙向鏈表中的數據單元的個數可能還沒有達到預設數量。此時,可直接將創建的數 據單元存儲至雙向鏈表最前面的位置,本實施例對此不作具體限定。其中,存儲方式可參考 本步驟204中的過程,此處不再寶述。
[0074] 需要說明的是,由于內存緩存中的存儲空間有限,當內存緩存中存儲的數據占用 的存儲空間達到一定值時,可能會影響內存緩存的性能。因此,為了避免內存緩存被占用太 多,可每隔預設周期檢測雙向鏈表占用的存儲空間,若雙向鏈表占用的存儲空間大于第二 預設闊值,按照從后往前的順序,對雙向鏈表中的數據單元進行刪除,直到雙向鏈表占用的 存儲空間不大于第Ξ預設闊值,本實施例對此不作具體限定。其中,第Ξ預設闊值小于第二 預設闊值,預設周期可根據需求進行設定,本實施例對此不作具體限定。例如,可將預設周 期設置為10秒。
[0075] 例如,W雙向鏈表中存儲了 10個數據單元,W從后往前的順序,第一個數據單元 至第十個數據單元占用的存儲空間分別為60邸、62邸、63邸、6化B、55邸、58邸、59邸、54邸、 57邸、60邸為例。根據每個數據單元占用的存儲空間,可得到雙向鏈表占用的總存儲空間為 589邸。
[0076] 若第二預設闊值為650邸,由于雙向鏈表占用的存儲空間不大于第二預設闊值,因 此,可不用對雙向鏈表中的數據單元進行刪除。
[0077] 若第二預設闊值為512邸,由于雙向鏈表占用的存儲空間大于第二預設闊值,因 此,可對雙向鏈表中的數據單元進行刪除。根據上述步驟203可知,被訪問概率低的數據單 元位于雙向鏈表中靠后的位置。因此,在刪除數據單元時,可按照從后往前的順序,對數據 單元進行刪除。在本例中,可先刪除占用存儲空間為60邸的最后一個數據單元。在刪除最 后一個數據單元后,雙向鏈表占用的存儲空間為巧89-60) = 529邸。
[007引若第Ξ預設闊值為128邸,由于刪除數據單元后,雙向鏈表占用的存儲空間還是大 于128KB。因此,可繼續按照從后往前的順序,對數據單元進行刪除,直到刪除至第二個數據 單元。由于刪除至第二個數據單元時,雙向鏈表占用的存儲空間為122邸,小于第Ξ預設闊 值128KB,從而可停止對數據單元進行刪除,并繼續執行存儲或訪問數據單元等步驟。
[0079] 需要的說明的是,除了上述步驟201至204中的數據存儲過程之外,由于實際操作 中,可能還需要對內存緩存中的數據進行訪問。為了便于對內存緩存中的數據進行訪問,在 將創建的數據單元添加至雙向鏈表最前面的位置之后,還可執行如下步驟。
[0080] 205、根據創建的數據單元,生成創建的數據單元的序列號。
[0081] 本實施例不對根據創建的數據單元,生成創建的數據單元的序列號的方式作具體 限定,包括但不限于:按照MD5 (Message Digest Algorithm,消息摘要算法第五版)對創建 的數據單元對應的數據進行計算,得到創建的數據單元的序列號。
[0082] 206、根據創建的數據單元在內存緩存中的存儲地址,定義對應的引用。
[0083] 由于后續需訪問內存緩存中的數據單元,而通過數據單元在內存緩存中的存儲地 址,就可W對數據單元進行訪問。因此,可根據創建的數據單元在內存緩存中的存儲地址, 定義對應的引用,通過引用將數據單元在內存緩存中的存儲地址記錄下來。當然,還可W通 過指針記錄數據單元在內存緩存中的存儲地址,本實施例對此不作具體限定。
[0084] 需要說明的是,本步驟206中定義的引用記錄的是創建的數據單元在內存緩存中 的存儲地址,用于指向創建的數據單元。而在創建的數據單元中的前向數據引用,所記錄 的是創建的數據單元在雙向鏈表中的前一個數據單元,在內存緩存中的存儲地址。在創建 的數據單元中的后向數據引用,所記錄的是創建的數據單元在雙向鏈表中的后一個數據單 元,在內存緩存中的存儲地址。
[00化]207、建立創建的數據單元的序列號及引用之間的映射關系,得到索引信息。
[0086] 通過上述步驟206及步驟207,在得到創建的數據單元的序列號及引用后,可W表 項的形式建立序列號及引用之間的映射關系,得到索引信息。例如,得到索引信息可如下表 1所示:
[0087] 表 1
[0088]
[0089] 其中,左邊為創建的單元的序列號,右邊為創建的數據單元的引用。
[0090] 208、將索引信息保存至索引信息表中。
[0091] 通過上述步驟207,在得到創建的數據單元對應的索引信息后,可將索引信息保存 至索引信息表。其中,索引信息表可如下表2所示:
[0092] 表 2
[0093]
[0094] W上述內容為基礎,本實施例還提供了一種數據訪問方法,包括但不限于:獲取數 據訪問請求,數據訪問請求中至少包含序列號;根據數據訪問請求中的序列號,在索引信息 表中進行查詢,得到對應的引用;根據查詢到的引用,訪問雙向鏈表中對應的數據單元。 陽0巧]例如,若數據訪問請求中的序列號為65flclfe6f417ec4,通過查詢表2,可得到對 應的引用為化inter_l。由于引用記錄了數據單元在內存緩存中的存儲地址,因此,根據引 用化inter_l,即可對內存緩存中對應的數據單元進行訪問。
[0096] 需要說明的是,當檢測到雙向鏈表中的任一數據單元被訪問時,由于本次被訪問 的數據單元是最近被訪問的數據單元。因此,可將任一數據單元移動至雙向鏈表最前面的 位置,本實施例對此不作具體限定。在本次訪問過程結束后,可將引用化inter_l對應的數 據單元移動至雙向鏈表最前面的位置。
[0097] 本發明實施例提供的方法,通過判斷雙向鏈表中的數據單元的個數是否達到預設 數量,并在雙向鏈表中的數據單元的個數達到預設數量時,將雙向鏈表中最后一個數據單 元刪除,即刪除最近使用次數最少的數據單元,從而將創建的數據單元存儲至雙向鏈表最 前面的位置,為可能被訪問多次的數據單元留下存儲空間。因此,內存緩存的利用率較高。
[0098] 本發明實施例提供了一種數據存儲裝置,該裝置用于執行上述實施例提供的數據 存儲方法。參見圖5,該裝置包括:
[0099] 創建模塊501,用于創建待加入內存緩存中的數據單元,內存緩存中的數據單元W 雙向鏈表的方式進行存儲;
[0100] 第一判斷模塊502,用于判斷雙向鏈表中的數據單元的個數是否達到預設數量; 陽101] 第一刪除模塊503,用于當雙向鏈表中的數據單元的個數達到預設數量時,將雙向 鏈表中最后一個數據單元刪除,最后一個數據單元為最近被訪問次數最少的數據單元; 陽102] 存儲模塊504,用于將創建的數據單元存儲至雙向鏈表最前面的位置。 陽103] 作為一種可選實施例,參見圖6,該裝置還包括:
[0104] 第二判斷模塊505,用于判斷創建的數據單元占用的存儲空間是否大于第一預設 闊值;
[0105] 添加模塊504,用于當創建的數據單元占用的存儲空間不大于第一預設闊值時,貝U 執行將創建的數據單元存儲至雙向鏈表最前面的位置的步驟。 陽106] 作為一種可選實施例,參見圖7,該裝置還包括:
[0107] 檢測模塊506,用于每隔預設周期檢測雙向鏈表占用的存儲空間;
[0108] 第二刪除模塊507,用于當雙向鏈表占用的存儲空間大于第二預設闊值時,按照從 后往前的順序,對雙向鏈表中的數據單元進行刪除,直到雙向鏈表占用的存儲空間不大于 第Ξ預設闊值,第Ξ預設闊值小于第二預設闊值。
[0109] 作為一種可選實施例,參見圖8,該裝置還包括:
[0110] 生成模塊508,用于根據創建的數據單元,生成創建的數據單元的序列號; 陽111] 定義模塊509,用于根據創建的數據單元在內存緩存中的存儲地址,定義對應的引 用;
[0112] 建立模塊510,用于建立創建的數據單元的序列號及引用之間的映射關系,得到索 引?胃息;
[0113] 保存模塊511,用于將索引信息保存至索引信息表中。
[0114] 作為一種可選實施例,參見圖9,該裝置還包括:
[0115] 獲取模塊512,用于獲取數據訪問請求,數據訪問請求中至少包含序列號;
[0116] 查詢模塊513,用于根據數據訪問請求中的序列號,在索引信息表中進行查詢,得 到對應的引用;
[0117] 訪問模塊514,用于根據查詢到的引用,訪問雙向鏈表中對應的數據單元。
[0118] 作為一種可選實施例,參見圖10,該裝置還包括:
[0119] 移動模塊515,用于當檢測到雙向鏈表中的任一數據單元被訪問時,將任一數據單 元移動至雙向鏈表最前面的位置。
[0120] 本發明實施例提供的裝置,通過判斷雙向鏈表中的數據單元的個數是否達到預設 數量,并在雙向鏈表中的數據單元的個數達到預設數量時,將雙向鏈表中最后一個數據單 元刪除,即刪除最近使用次數最少的數據單元,從而將創建的數據單元存儲至雙向鏈表最 前面的位置,為可能被訪問多次的數據單元留下存儲空間。因此,內存緩存的利用率較高。 陽121] 本實施例提供了一種終端,該終端可W用于執行上述各個實施例中提供的數據存 儲方法。參見圖11,該終端1100包括:
[0122] 終端1100可W包括RF(Radio化equen巧,射頻)電路110、包括有一個或一個W上 計算機可讀存儲介質的存儲器120、輸入單元130、顯示單元140、傳感器150、音頻電路160、 WiFi (Wireless Fidelity,無線保真)模塊170、包括有一個或者一個W上處理核屯、的處理 器180、W及電源190等部件。本領域技術人員可W理解,圖11中示出的終端結構并不構成 對終端的限定,可W包括比圖示更多或更少的部件,或者組合某些部件,或者不同的部件布 置。其中:
[0123] RF電路110可用于收發信息或通話過程中,信號的接收和發送,特別地,將基站 的下行信息接收后,交由一個或者一個W上處理器180處理;另外,將設及上行的數據發 送給基站。通常,RF電路110包括但不限于天線、至少一個放大器、調諧器、一個或多個 振蕩器、用戶身份模塊(SIM)卡、收發信機、禪合器、LNA化OW Noise Amplifier,低噪聲放 大器)、雙工器等。此外,RF電路110還可W通過無線通信與網絡和其他設備通信。所述 無線通信可W使用任一通信標準或協議,包括但不限于GSM(Global System of Mobile communication,全球移動通訊系統)、GPRS(General Packet Radio Service,通用分組 無線服務)、CDMA (Code Division Multiple Access,碼分多址)、WCDMA (Wideband Code Division Multiple Access,寬帶碼分多址)、LTE(X〇ng Term Evolution,長期演進)、電 子郵件、SMS (化ort Messaging Service,短消息服務)等。
[0124] 存儲器120可用于存儲軟件程序W及模塊,處理器180通過運行存儲在存儲器120 的軟件程序W及模塊,從而執行各種功能應用W及數據處理。存儲器120可主要包括存儲 程序區和存儲數據區,其中,存儲程序區可存儲操作系統、至少一個功能所需的應用程序 (比如聲音播放功能、圖像播放功能等)等;存儲數據區可存儲根據終端1100的使用所創 建的數據(比如音頻數據、電話本等)等。此外,存儲器120可W包括高速隨機存取存儲器, 還可W包括非易失性存儲器,例如至少一個磁盤存儲器件、閃存器件、或其他易失性固態存 儲器件。相應地,存儲器120還可W包括存儲器控制器,W提供處理器180和輸入單元130 對存儲器120的訪問。
[01巧]輸入單元130可用于接收輸入的數字或字符信息,W及產生與用戶設置W及功能 控制有關的鍵盤、鼠標、操作桿、光學或者軌跡球信號輸入。具體地,輸入單元130可包括觸 敏表面131 W及其他輸入設備132。觸敏表面131,也稱為觸摸顯示屏或者觸控板,可收集 用戶在其上或附近的觸摸操作(比如用戶使用手指、觸筆等任何適合的物體或附件在觸敏 表面131上或在觸敏表面131附近的操作),并根據預先設定的程式驅動相應的連接裝置。 可選的,觸敏表面131可包括觸摸檢測裝置和觸摸控制器兩個部分。其中,觸摸檢測裝置檢 測用戶的觸摸方位,并檢測觸摸操作帶來的信號,將信號傳送給觸摸控制器;觸摸控制器從 觸摸檢測裝置上接收觸摸信息,并將它轉換成觸點坐標,再送給處理器180,并能接收處理 器180發來的命令并加 W執行。此外,可W采用電阻式、電容式、紅外線W及表面聲波等多 種類型實現觸敏表面131。除了觸敏表面131,輸入單元130還可W包括其他輸入設備132。 具體地,其他輸入設備132可W包括但不限于物理鍵盤、功能鍵(比如音量控制按鍵、開關 按鍵等)、軌跡球、鼠標、操作桿等中的一種或多種。 陽126] 顯示單元140可用于顯示由用戶輸入的信息或提供給用戶的信息W及終端1100 的各種圖形用戶接口,運些圖形用戶接口可W由圖形、文本、圖標、視頻和其任意組合來構 成。顯示單元140可包括顯示面板141,可選的,可W采用LCD化iquid化ystal Display, 液晶顯示器)、〇LED (化ganic Li曲t-Emitting Diode,有機發光二極管)等形式來配置顯 示面板141。進一步的,觸敏表面131可覆蓋顯示面板141,當觸敏表面131檢測到在其上 或附近的觸摸操作后,傳送給處理器180 W確定觸摸事件的類型,隨后處理器180根據觸摸 事件的類型在顯示面板141上提供相應的視覺輸出。雖然在圖11中,觸敏表面131與顯示 面板141是作為兩個獨立的部件來實現輸入和輸入功能,但是在某些實施例中,可W將觸 敏表面131與顯示面板141集成而實現輸入和輸出功能。 陽127] 終端1100還可包括至少一種傳感器150,比如光傳感器、運動傳感器W及其他傳 感器。具體地,光傳感器可包括環境光傳感器及接近傳感器,其中,環境光傳感器可根據環 境光線的明暗來調節顯示面板141的亮度,接近傳感器可在終端1100移動到耳邊時,關閉 顯示面板141和/或背光。作為運動傳感器的一種,重力加速度傳感器可檢測各個方向上 (一般為Ξ軸)加速度的大小,靜止時可檢測出重力的大小及方向,可用于識別手機姿態的 應用(比如橫豎屏切換、相關游戲、磁力計姿態校準)、振動識別相關功能(比如計步器、敲 擊)等;至于終端1100還可配置的巧螺儀、氣壓計、濕度計、溫度計、紅外線傳感器等其他傳 感器,在此不再寶述。 陽12引音頻電路160、揚聲器161,傳聲器162可提供用戶與終端1100之間的音頻接口。 音頻電路160可將接收到的音頻數據轉換后的電信號,傳輸到揚聲器161,由揚聲器161轉 換為聲音信號輸出;另一方面,傳聲器162將收集的聲音信號轉換為電信號,由音頻電路 160接收后轉換為音頻數據,再將音頻數據輸出處理器180處理后,經RF電路110 W發送給 比如另一終端,或者將音頻數據輸出至存儲器120 W便進一步處理。音頻電路160還可能 包括耳塞插孔,W提供外設耳機與終端1100的通信。
[0129] WiFi屬于短距離無線傳輸技術,終端1100通過WiFi模塊170可W幫助用戶收發 電子郵件、瀏覽網頁和訪問流式媒體等,它為用戶提供了無線的寬帶互聯網訪問。雖然圖11 示出了 WiFi模塊170,但是可W理解的是,其并不屬于終端1100的必須構成,完全可W根據 需要在不改變發明的本質的范圍內而省略。 陽130] 處理器180是終端1100的控制中心利用各種接口和線路連接整個手機的各個部 分,通過運行或執行存儲在存儲器120內的軟件程序和/或模塊,W及調用存儲在存儲器 120內的數據,執行終端1100的各種功能和處理數據,從而對手機進行整體監控。可選的, 處理器180可包括一個或多個處理核屯、;優選的,處理器180可集成應用處理器和調制解調 處理器,其中,應用處理器主要處理操作系統、用戶界面和應用程序等,調制解調處理器主 要處理無線通信。可W理解的是,上述調制解調處理器也可W不集成到處理器180中。 陽131] 終端1100還包括給各個部件供電的電源190(比如電池),優選的,電源可W通過 電源管理系統與處理器180邏輯相連,從而通過電源管理系統實現管理充電、放電、W及功 耗管理等功能。電源190還可W包括一個或一個W上的直流或交流電源、再充電系統、電源 故障檢測電路、電源轉換器或者逆變器、電源狀態指示器等任意組件。 陽132] 盡管未示出,終端1100還可W包括攝像頭、藍牙模塊等,在此不再寶述。具體在本 實施例中,終端的顯示單元是觸摸屏顯示器,終端還包括有存儲器,W及一個或者一個W上 的程序,其中一個或者一個W上程序存儲于存儲器中,且經配置W由一個或者一個W上處 理器執行。所述一個或者一個W上程序包含用于執行W下操作的指令:
[0133] 創建待加入內存緩存中的數據單元,所述內存緩存中的數據單元W雙向鏈表的方 式進行存儲;
[0134] 判斷所述雙向鏈表中的數據單元的個數是否達到預設數量;
[0135] 若所述雙向鏈表中的數據單元的個數達到預設數量,將所述雙向鏈表中最后一個 數據單元刪除,所述最后一個數據單元為最近被訪問次數最少的數據單元; 陽136] 將所述創建的數據單元存儲至所述雙向鏈表最前面的位置。
[0137] 假設上述為第一種可能的實施方式,則在第一種可能的實施方式作為基礎而提供 的第二種可能的實施方式中,終端的存儲器中,還包含用于執行W下操作的指令:
[0138] 判斷所述創建的數據單元占用的存儲空間是否大于第一預設闊值;
[0139] 若所述創建的數據單元占用的存儲空間不大于第一預設闊值,則執行將所述創建 的數據單元存儲至所述雙向鏈表最前面的位置的步驟。
[0140] 在第一種可能的實施方式作為基礎而提供的第Ξ種可能的實施方式中,終端的存 儲器中,還包含用于執行W下操作的指令: 陽141] 每隔預設周期檢測所述雙向鏈表占用的存儲空間;
[0142] 若所述雙向鏈表占用的存儲空間大于第二預設闊值,按照從后往前的順序,對所 述雙向鏈表中的數據單元進行刪除,直到所述雙向鏈表占用的存儲空間不大于第Ξ預設闊 值,所述第Ξ預設闊值小于所述第二預設闊值。 陽143] 在第一種可能的實施方式作為基礎而提供的第四種可能的實施方式中,終端的存 儲器中,還包含用于執行W下操作的指令:
[0144] 根據所述創建的數據單元,生成所述創建的數據單元的序列號;
[0145] 根據所述創建的數據單元在所述內存緩存中的存儲地址,定義對應的引用; 陽146] 建立所述創建的數據單元的序列號及引用之間的映射關系,得到索引信息; 陽147] 將所述索引信息保存至索引信息表中。
[0148] 在第四種可能的實施方式作為基礎而提供的第五種可能的實施方式中,終端的存 儲器中,還包含用于執行W下操作的指令:
[0149] 獲取數據訪問請求,所述數據訪問請求中至少包含序列號;
[0150] 根據所述數據訪問請求中的序列號,在所述索引信息表中進行查詢,得到對應的 引用; 陽151] 根據查詢到的引用,訪問所述雙向鏈表中對應的數據單元。
[0152] 在第一種可能的實施方式或第五種可能的實施方式作為基礎而提供的第六種可 能的實施方式中,終端的存儲器中,還包含用于執行W下操作的指令:
[0153] 當檢測到所述雙向鏈表中的任一數據單元被訪問時,將所述任一數據單元移動至 所述雙向鏈表最前面的位置。
[0154] 本發明實施例提供的終端,通過判斷雙向鏈表中的數據單元的個數是否達到預設 數量,并在雙向鏈表中的數據單元的個數達到預設數量時,將雙向鏈表中最后一個數據單 元刪除,即刪除最近使用次數最少的數據單元,從而將創建的數據單元存儲至雙向鏈表最 前面的位置,為可能被訪問多次的數據單元留下存儲空間。因此,內存緩存的利用率較高。
[0155] 本發明實施例還提供了一種計算機可讀存儲介質,該計算機可讀存儲介質可W是 上述實施例中的存儲器中所包含的計算機可讀存儲介質;也可W是單獨存在,未裝配入終 端中的計算機可讀存儲介質。該計算機可讀存儲介質存儲有一個或者一個W上程序,該一 個或者一個W上程序被一個或者一個W上的處理器用來執行實現數據存儲方法,該方法包 括:
[0156] 創建待加入內存緩存中的數據單元,所述內存緩存中的數據單元W雙向鏈表的方 式進行存儲; 陽157] 判斷所述雙向鏈表中的數據單元的個數是否達到預設數量;
[0158] 若所述雙向鏈表中的數據單元的個數達到預設數量,將所述雙向鏈表中最后一個 數據單元刪除,所述最后一個數據單元為最近被訪問次數最少的數據單元;
[0159] 將所述創建的數據單元存儲至所述雙向鏈表最前面的位置。
[0160] 假設上述為第一種可能的實施方式,則在第一種可能的實施方式作為基礎而提供 的第二種可能的實施方式中,所述將所述創建的數據單元存儲至所述雙向鏈表最前面的位 置之前,還包括: 陽161] 判斷所述創建的數據單元占用的存儲空間是否大于第一預設闊值; 陽162] 若所述創建的數據單元占用的存儲空間不大于第一預設闊值,則執行將所述創建 的數據單元存儲至所述雙向鏈表最前面的位置的步驟。
[0163] 在第一種可能的實施方式作為基礎而提供的第Ξ種可能的實施方式中,所述方法 還包括:
[0164] 每隔預設周期檢測所述雙向鏈表占用的存儲空間;
[01化]若所述雙向鏈表占用的存儲空間大于第二預設闊值,按照從后往前的順序,對所 述雙向鏈表中的數據單元進行刪除,直到所述雙向鏈表占用的存儲空間不大于第Ξ預設闊 值,所述第Ξ預設闊值小于所述第二預設闊值。
[0166] 在第一種可能的實施方式作為基礎而提供的第四種可能的實施方式中,所述將所 述創建的數據單元存儲至所述雙向鏈表最前面的位置之后,還包括:
[0167] 根據所述創建的數據單元,生成所述創建的數據單元的序列號;
[0168] 根據所述創建的數據單元在所述內存緩存中的存儲地址,定義對應的引用;
[0169] 建立所述創建的數據單元的序列號及引用之間的映射關系,得到索引信息; 陽170] 將所述索引信息保存至索引信息表中。 陽171] 在第四種可能的實施方式作為基礎而提供的第五種可能的實施方式中,所述方法 還包括: 陽172] 獲取數據訪問請求,所述數據訪問請求中至少包含序列號; 陽173] 根據所述數據訪問請求中的序列號,在所述索引信息表中進行查詢,得到對應的 引用;
[0174] 根據查詢到的引用,訪問所述雙向鏈表中對應的數據單元。
[01巧]在第一種可能的實施方式或第五種可能的實施方式作為基礎而提供的第六種可 能的實施方式中,當檢測到所述雙向鏈表中的任一數據單元被訪問時,將所述任一數據單 元移動至所述雙向鏈表最前面的位置。
[0176] 本發明實施例提供的計算機可讀存儲介質,通過判斷雙向鏈表中的數據單元的個 數是否達到預設數量,并在雙向鏈表中的數據單元的個數達到預設數量時,將雙向鏈表中 最后一個數據單元刪除,即刪除最近使用次數最少的數據單元,從而將創建的數據單元存 儲至雙向鏈表最前面的位置,為可能被訪問多次的數據單元留下存儲空間。因此,內存緩存 的利用率較高。
[0177] 本發明實施例提供了一種圖形用戶接口,所述圖形用戶接口用在終端上,所述終 端包括觸摸屏顯示器、存儲器和用于執行一個或者一個W上的程序的一個或者一個W上的 處理器;所述圖形用戶接口包括:
[0178] 創建待加入內存緩存中的數據單元,所述內存緩存中的數據單元W雙向鏈表的方 式進行存儲;
[0179] 判斷所述雙向鏈表中的數據單元的個數是否達到預設數量;
[0180] 若所述雙向鏈表中的數據單元的個數達到預設數量,將所述雙向鏈表中最后一個 數據單元刪除,所述最后一個數據單元為最近被訪問次數最少的數據單元; 陽181] 將所述創建的數據單元存儲至所述雙向鏈表最前面的位置。
[0182] 本發明實施例提供的圖形用戶接口,通過判斷雙向鏈表中的數據單元的個數是否 達到預設數量,并在雙向鏈表中的數據單元的個數達到預設數量時,將雙向鏈表中最后一 個數據單元刪除,即刪除最近使用次數最少的數據單元,從而將創建的數據單元存儲至雙 向鏈表最前面的位置,為可能被訪問多次的數據單元留下存儲空間。因此,內存緩存的利用 率較高。 陽183] 需要說明的是:上述實施例提供的數據存儲裝置在存儲數據時,僅W上述各功能 模塊的劃分進行舉例說明,實際應用中,可W根據需要而將上述功能分配由不同的功能模 塊完成,即將裝置的內部結構劃分成不同的功能模塊,W完成W上描述的全部或者部分功 能。另外,上述實施例提供的數據存儲裝置與數據存儲方法實施例屬于同一構思,其具體實 現過程詳見方法實施例,運里不再寶述。
[0184] 本領域普通技術人員可W理解實現上述實施例的全部或部分步驟可W通過硬件 來完成,也可W通過程序來指令相關的硬件完成,所述的程序可W存儲于一種計算機可讀 存儲介質中,上述提到的存儲介質可W是只讀存儲器,磁盤或光盤等。
[0185] W上所述僅為本發明的較佳實施例,并不用W限制本發明,凡在本發明的精神和 原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護范圍之內。
【主權項】
1. 一種數據存儲方法,其特征在于,所述方法包括: 創建待加入內存緩存中的數據單元,所述內存緩存中的數據單元以雙向鏈表的方式進 行存儲; 判斷所述雙向鏈表中的數據單元的個數是否達到預設數量; 若所述雙向鏈表中的數據單元的個數達到預設數量,將所述雙向鏈表中最后一個數據 單元刪除,所述最后一個數據單元為最近被訪問次數最少的數據單元; 將創建的數據單元存儲至所述雙向鏈表最前面的位置。2. 根據權利要求1所述的方法,其特征在于,所述將創建的數據單元存儲至所述雙向 鏈表最前面的位置之前,還包括: 判斷所述創建的數據單元占用的存儲空間是否大于第一預設閾值; 若所述創建的數據單元占用的存儲空間不大于第一預設閾值,則執行將所述創建的數 據單元存儲至所述雙向鏈表最前面的位置的步驟。3. 根據權利要求1所述的方法,其特征在于,所述方法還包括: 每隔預設周期檢測所述雙向鏈表占用的存儲空間; 若所述雙向鏈表占用的存儲空間大于第二預設閾值,按照從后往前的順序,對所述雙 向鏈表中的數據單元進行刪除,直到所述雙向鏈表占用的存儲空間不大于第三預設閾值, 所述第三預設閾值小于所述第二預設閾值。4. 根據權利要求1所述的方法,其特征在于,所述將創建的數據單元存儲至所述雙向 鏈表最前面的位置之后,還包括: 根據所述創建的數據單元,生成所述創建的數據單元的序列號; 根據所述創建的數據單元在所述內存緩存中的存儲地址,定義對應的引用; 建立所述創建的數據單元的序列號及引用之間的映射關系,得到索引信息; 將所述索引信息保存至索引信息表中。5. 根據權利要求4所述的方法,其特征在于,所述方法還包括: 獲取數據訪問請求,所述數據訪問請求中至少包含序列號; 根據所述數據訪問請求中的序列號,在所述索引信息表中進行查詢,得到對應的引 用; 根據查詢到的引用,訪問所述雙向鏈表中對應的數據單元。6. 根據權利要求1至5中任一權利要求所述的方法,其特征在于,所述方法還包括: 當檢測到所述雙向鏈表中的任一數據單元被訪問時,將所述任一數據單元移動至所述 雙向鏈表最前面的位置。7. -種數據存儲裝置,其特征在于,所述裝置包括: 創建模塊,用于創建待加入內存緩存中的數據單元,所述內存緩存中的數據單元以雙 向鏈表的方式進行存儲; 第一判斷模塊,用于判斷所述雙向鏈表中的數據單元的個數是否達到預設數量; 第一刪除模塊,用于當所述雙向鏈表中的數據單元的個數達到預設數量時,將所述雙 向鏈表中最后一個數據單元刪除,所述最后一個數據單元為最近被訪問次數最少的數據單 元; 存儲模塊,用于將創建的數據單元存儲至所述雙向鏈表最前面的位置。8. 根據權利要求7所述的裝置,其特征在于,所述裝置還包括: 第二判斷模塊,用于判斷所述創建的數據單元占用的存儲空間是否大于第一預設閾 值; 所述添加模塊,用于當所述創建的數據單元占用的存儲空間不大于第一預設閾值時, 則執行將所述創建的數據單元存儲至所述雙向鏈表最前面的位置的步驟。9. 根據權利要求7所述的裝置,其特征在于,所述裝置還包括: 檢測模塊,用于每隔預設周期檢測所述雙向鏈表占用的存儲空間; 第二刪除模塊,用于當所述雙向鏈表占用的存儲空間大于第二預設閾值時,按照從后 往前的順序,對所述雙向鏈表中的數據單元進行刪除,直到所述雙向鏈表占用的存儲空間 不大于第三預設閾值,所述第三預設閾值小于所述第二預設閾值。10. 根據權利要求7所述的裝置,其特征在于,所述裝置還包括: 生成模塊,用于根據所述創建的數據單元,生成所述創建的數據單元的序列號; 定義模塊,用于根據所述創建的數據單元在所述內存緩存中的存儲地址,定義對應的 引用; 建立模塊,用于建立所述創建的數據單元的序列號及引用之間的映射關系,得到索引 信息; 保存模塊,用于將所述索引信息保存至索引信息表中。11. 根據權利要求10所述的裝置,其特征在于,所述裝置還包括: 獲取模塊,用于獲取數據訪問請求,所述數據訪問請求中至少包含序列號; 查詢模塊,用于根據所述數據訪問請求中的序列號,在所述索引信息表中進行查詢,得 到對應的引用; 訪問模塊,用于根據查詢到的引用,訪問所述雙向鏈表中對應的數據單元。12. 根據權利要求7至11中任一權利要求所述的裝置,其特征在于,所述裝置還包括: 移動模塊,用于當檢測到所述雙向鏈表中的任一數據單元被訪問時,將所述任一數據 單元移動至所述雙向鏈表最前面的位置。
【文檔編號】G06F3/06GK105988715SQ201510060667
【公開日】2016年10月5日
【申請日】2015年2月5日
【發明人】王剛
【申請人】深圳市騰訊計算機系統有限公司