預(yù)設(shè)的時(shí)間閾值時(shí),確定對(duì)應(yīng)的緩存值無效,并從原數(shù)據(jù)庫中讀取對(duì)應(yīng)的數(shù)據(jù)對(duì)已無效的緩存值進(jìn)行更新,同時(shí)由于在客戶端調(diào)用接口讀取數(shù)據(jù)時(shí),緩存值無效則進(jìn)行更新,使得緩存數(shù)據(jù)的更新分散在客戶端的行為中,不再集中進(jìn)行更新,提高了數(shù)據(jù)更新的效率,且僅針對(duì)客戶端使用的數(shù)據(jù)進(jìn)行更新,進(jìn)一步的提高了效率。
[0163]參照?qǐng)D13,圖13為本發(fā)明數(shù)據(jù)緩存方法的第三實(shí)施例的流程示意圖。基于上述數(shù)據(jù)緩存方法的第一實(shí)施例,所述步驟S30中從原數(shù)據(jù)庫讀取所述接口對(duì)應(yīng)的數(shù)據(jù)返回給所述客戶端的步驟包括:
[0164]步驟S31,從原數(shù)據(jù)庫中讀取數(shù)據(jù),并將所述原數(shù)據(jù)庫的數(shù)據(jù)轉(zhuǎn)換為對(duì)應(yīng)的對(duì)象;
[0165]步驟S32,從所述原數(shù)據(jù)庫的對(duì)象中提取所述接口對(duì)應(yīng)的對(duì)象;
[0166]步驟S33,將所提取的對(duì)象轉(zhuǎn)換為所述接口對(duì)應(yīng)的數(shù)據(jù),并將所述接口對(duì)應(yīng)的數(shù)據(jù)返回給所述客戶端。
[0167]所述數(shù)據(jù)緩存裝置從原數(shù)據(jù)庫中讀取數(shù)據(jù),并將所述原數(shù)據(jù)庫的數(shù)據(jù)轉(zhuǎn)換為所述原數(shù)據(jù)庫的數(shù)據(jù)對(duì)應(yīng)的對(duì)象;所述數(shù)據(jù)緩存裝置從所述原數(shù)據(jù)庫的對(duì)象中提取所述接口對(duì)應(yīng)的對(duì)象;所述數(shù)據(jù)緩存裝置將所提取的對(duì)象轉(zhuǎn)換為所述接口對(duì)應(yīng)的數(shù)據(jù),并將所述接口對(duì)應(yīng)的數(shù)據(jù)返回給所述客戶端。
[0168]例如:所述數(shù)據(jù)緩存裝置讀取MySQL數(shù)據(jù)庫中的數(shù)據(jù),將讀取的數(shù)據(jù)轉(zhuǎn)換為V0對(duì)象,從V0對(duì)象中取出客戶端需要的數(shù)據(jù)對(duì)象,將取出的數(shù)據(jù)對(duì)象轉(zhuǎn)換為字符串?dāng)?shù)據(jù),將所述字符串?dāng)?shù)據(jù)返回給所述客戶端。
[0169]本實(shí)施例將所述接口對(duì)應(yīng)的數(shù)據(jù)作為緩存值保存在緩存數(shù)據(jù)庫中,使得在客戶端調(diào)用接口讀取數(shù)據(jù)時(shí),能夠從緩存數(shù)據(jù)庫中直接讀取到所述接口對(duì)應(yīng)的數(shù)據(jù),避免了將緩存數(shù)據(jù)庫中的數(shù)據(jù)轉(zhuǎn)換為對(duì)象以查找所述接口對(duì)應(yīng)數(shù)據(jù)的數(shù)據(jù)轉(zhuǎn)換過程,極大的提高了數(shù)據(jù)讀取的效率,并提高了系統(tǒng)的運(yùn)行效率。
[0170]參照?qǐng)D14,圖14為本發(fā)明數(shù)據(jù)緩存方法的第四實(shí)施例的流程示意圖?;谏鲜鰯?shù)據(jù)緩存方法的第一實(shí)施例,所述步驟S10包括:
[0171]步驟S11,在客戶端通過接口讀取數(shù)據(jù)時(shí),確定所述接口對(duì)應(yīng)的參數(shù)類;
[0172]步驟S12,獲取所述參數(shù)類的類名和參數(shù)值;
[0173]步驟S13,根據(jù)所述類名和所述參數(shù)值生成所述接口對(duì)應(yīng)的緩存鍵。
[0174]在客戶端通過接口讀取數(shù)據(jù)時(shí),所述數(shù)據(jù)緩存裝置確定所述接口對(duì)應(yīng)的參數(shù)類,所述參數(shù)類與所述接口唯一對(duì)應(yīng),即每個(gè)接口的參數(shù)類是唯一存在的;所述數(shù)據(jù)緩存裝置獲取所述參數(shù)類的類名和參數(shù)值,并根據(jù)所述類名和所述參數(shù)值生成所述接口唯一對(duì)應(yīng)的緩存鍵,即所述接口與所述緩存鍵的對(duì)應(yīng)關(guān)系是一對(duì)一的。
[0175]具體的,緩存鍵的生成規(guī)則可以按如下設(shè)置:參數(shù)類名,ID項(xiàng)參數(shù)的值,非ID項(xiàng)參數(shù)的值。例如,獲取應(yīng)用評(píng)論的接口,其表單類為SearchCommentForm,參數(shù)為softltemld、pageNo和pageSize。通過注解設(shè)置softltemld為緩存鍵生成規(guī)則中的ID項(xiàng),將其排在緩存鍵特征的最前面;其余參數(shù)則按照哈希表中的哈希規(guī)則進(jìn)行排序。如果有多個(gè)ID項(xiàng)的參數(shù),其在緩存鍵特征中的排序也是按照哈希表的哈希規(guī)則。保證了相同參數(shù)的同個(gè)接口與所生成的緩存鍵是唯一對(duì)應(yīng)的。如softltemld為298689,pageNo為1,pageSize為100,則生成的緩存鍵為 “SearchCommentForm,298689,20,1 ”。
[0176]通過接口的參數(shù)類來生成緩存鍵,可以保證緩存鍵的唯一性,而且在其它客戶端需要更新緩存時(shí),也能夠方便的通過設(shè)置參數(shù)類的參數(shù),生成對(duì)應(yīng)的緩存鍵,來操作需要更新的緩存數(shù)據(jù)。
[0177]本實(shí)施例根據(jù)客戶端讀取數(shù)據(jù)時(shí)調(diào)用的接口生成對(duì)應(yīng)的緩存鍵,同時(shí),將所述接口對(duì)應(yīng)的數(shù)據(jù)作為緩存值保存在緩存數(shù)據(jù)庫中,采用這種方式進(jìn)行數(shù)據(jù)緩存,將接口的參數(shù)表單類與緩存鍵唯一對(duì)應(yīng),提高了緩存鍵的生成效率,方便了不同客戶端對(duì)同一緩存的更新。同時(shí)使得在客戶端調(diào)用接口讀取數(shù)據(jù)時(shí),能夠從緩存數(shù)據(jù)庫中直接讀取到所述接口對(duì)應(yīng)的數(shù)據(jù),避免了將緩存數(shù)據(jù)庫中的數(shù)據(jù)轉(zhuǎn)換為對(duì)象以查找所述接口對(duì)應(yīng)數(shù)據(jù)的數(shù)據(jù)轉(zhuǎn)換過程,極大的提高了數(shù)據(jù)讀取的效率,并提高了系統(tǒng)的運(yùn)行效率。
[0178]需要說明的是,在本文中,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者裝置不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者裝置所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括該要素的過程、方法、物品或者裝置中還存在另外的相同要素。
[0179]上述本發(fā)明實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。
[0180]通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到上述實(shí)施例方法可借助軟件加必需的通用硬件平臺(tái)的方式來實(shí)現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳的實(shí)施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)(如R0M/RAM、磁碟、光盤)中,包括若干指令用以使得一臺(tái)終端設(shè)備(可以是手機(jī),計(jì)算機(jī),服務(wù)器,空調(diào)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。
[0181]以上僅為本發(fā)明的優(yōu)選實(shí)施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。
【主權(quán)項(xiàng)】
1.一種數(shù)據(jù)緩存裝置,其特征在于,所述數(shù)據(jù)緩存裝置包括: 生成模塊,用于在客戶端通過接口讀取數(shù)據(jù)時(shí),根據(jù)所述接口的接口信息生成緩存鍵; 查找模塊,用于在緩存數(shù)據(jù)庫中查找所述緩存鍵對(duì)應(yīng)的緩存值; 存儲(chǔ)模塊,用于若未查找到對(duì)應(yīng)的緩存值,則從原數(shù)據(jù)庫讀取所述接口對(duì)應(yīng)的數(shù)據(jù)返回給所述客戶端,并將返回的數(shù)據(jù)作為所述緩存值保存至所述緩存數(shù)據(jù)庫。2.如權(quán)利要求1所述的數(shù)據(jù)緩存裝置,其特征在于,所述數(shù)據(jù)緩存裝置還包括判斷模塊; 所述判斷模塊,用于若查找到對(duì)應(yīng)的緩存值,則判斷所述緩存值是否有效; 所述存儲(chǔ)模塊,還用于若有效,則將所述緩存值返回給所述客戶端; 所述存儲(chǔ)模塊,還用于若無效,則從原數(shù)據(jù)庫讀取所述接口對(duì)應(yīng)的數(shù)據(jù)返回給所述客戶端,并用返回的數(shù)據(jù)替換已無效的緩存值保存至所述緩存數(shù)據(jù)庫。3.如權(quán)利要求2所述的數(shù)據(jù)緩存裝置,其特征在于,所述判斷模塊包括判斷單元和判定單元; 所述判斷單元,用于判斷所述緩存值的存儲(chǔ)時(shí)間是否達(dá)到預(yù)設(shè)的時(shí)間閾值; 所述判定單元,用于若所述保存時(shí)間小于所述時(shí)間閾值,則判定所述緩存值有效;所述判定單元,還用于若所述保存時(shí)間大于或等于所述時(shí)間閾值,則判定所述緩存值已無效。4.如權(quán)利要求1所述的數(shù)據(jù)緩存裝置,其特征在于,所述存儲(chǔ)模塊包括第一轉(zhuǎn)換單元、提取單元和第二轉(zhuǎn)換單元; 所述第一轉(zhuǎn)換單元,用于從原數(shù)據(jù)庫中讀取數(shù)據(jù),并將所述原數(shù)據(jù)庫的數(shù)據(jù)轉(zhuǎn)換為對(duì)應(yīng)的對(duì)象; 所述提取單元,用于從所述原數(shù)據(jù)庫的對(duì)象中提取所述接口對(duì)應(yīng)的對(duì)象; 所述第二轉(zhuǎn)換單元,用于將所提取的對(duì)象轉(zhuǎn)換為所述接口對(duì)應(yīng)的數(shù)據(jù),并將所述接口對(duì)應(yīng)的數(shù)據(jù)返回給所述客戶端。5.如權(quán)利要求1至4任一項(xiàng)所述的數(shù)據(jù)緩存裝置,其特征在于,所述生成模塊包括確定單元、獲取單元和生成單元; 所述確定單元,用于在客戶端通過接口讀取數(shù)據(jù)時(shí),確定所述接口對(duì)應(yīng)的參數(shù)類; 所述獲取單元,用于獲取所述參數(shù)類的類名和參數(shù)值; 所述生成單元,用于根據(jù)所述類名和所述參數(shù)值生成所述接口對(duì)應(yīng)的緩存鍵。6.一種數(shù)據(jù)緩存方法,其特征在于,所述數(shù)據(jù)緩存方法包括以下步驟: 在客戶端通過接口讀取數(shù)據(jù)時(shí),根據(jù)所述接口的接口信息生成緩存鍵; 在緩存數(shù)據(jù)庫中查找所述緩存鍵對(duì)應(yīng)的緩存值; 若未查找到對(duì)應(yīng)的緩存值,則從原數(shù)據(jù)庫讀取所述接口對(duì)應(yīng)的數(shù)據(jù)返回給所述客戶端,并將返回的數(shù)據(jù)作為所述緩存值保存至所述緩存數(shù)據(jù)庫。7.如權(quán)利要求6所述的數(shù)據(jù)緩存方法,其特征在于,所述在緩存數(shù)據(jù)庫中查找所述緩存鍵對(duì)應(yīng)的緩存值的步驟之后,還包括: 若查找到對(duì)應(yīng)的緩存值,則判斷所述緩存值是否有效; 若有效,則將所述緩存值返回給所述客戶端; 若無效,則從原數(shù)據(jù)庫讀取所述接口對(duì)應(yīng)的數(shù)據(jù)返回給所述客戶端,并用返回的數(shù)據(jù)替換已無效的緩存值保存至所述緩存數(shù)據(jù)庫。8.如權(quán)利要求7所述的數(shù)據(jù)緩存方法,其特征在于,所述判斷所述緩存值是否有效的步驟包括: 判斷所述緩存值的存儲(chǔ)時(shí)間是否達(dá)到預(yù)設(shè)的時(shí)間閾值; 若所述保存時(shí)間小于所述時(shí)間閾值,則判定所述緩存值有效; 若所述保存時(shí)間大于或等于所述時(shí)間閾值,則判定所述緩存值已無效。9.如權(quán)利要求6所述的數(shù)據(jù)緩存方法,其特征在于,所述從原數(shù)據(jù)庫讀取所述接口對(duì)應(yīng)的數(shù)據(jù)返回給所述客戶端的步驟包括: 從原數(shù)據(jù)庫中讀取數(shù)據(jù),并將所述原數(shù)據(jù)庫的數(shù)據(jù)轉(zhuǎn)換為對(duì)應(yīng)的對(duì)象; 從所述原數(shù)據(jù)庫的對(duì)象中提取所述接口對(duì)應(yīng)的對(duì)象; 將所提取的對(duì)象轉(zhuǎn)換為所述接口對(duì)應(yīng)的數(shù)據(jù),并將所述接口對(duì)應(yīng)的數(shù)據(jù)返回給所述客戶端。10.如權(quán)利要求6至9任一項(xiàng)所述的數(shù)據(jù)緩存方法,其特征在于,所述在客戶端通過接口讀取數(shù)據(jù)時(shí),根據(jù)所述接口的接口信息生成緩存鍵的步驟包括: 在客戶端通過接口讀取數(shù)據(jù)時(shí),確定所述接口對(duì)應(yīng)的參數(shù)類; 獲取所述參數(shù)類的類名和參數(shù)值; 根據(jù)所述類名和所述參數(shù)值生成所述接口對(duì)應(yīng)的緩存鍵。
【專利摘要】本發(fā)明公開了一種數(shù)據(jù)緩存裝置,所述數(shù)據(jù)緩存裝置包括:生成模塊,用于在客戶端通過接口讀取數(shù)據(jù)時(shí),根據(jù)所述接口的接口信息生成緩存鍵;查找模塊,用于在緩存數(shù)據(jù)庫中查找所述緩存鍵對(duì)應(yīng)的緩存值;存儲(chǔ)模塊,用于若未查找到對(duì)應(yīng)的緩存值,則從原數(shù)據(jù)庫讀取所述接口對(duì)應(yīng)的數(shù)據(jù)返回給所述客戶端,并將返回的數(shù)據(jù)作為所述緩存值保存至所述緩存數(shù)據(jù)庫。本發(fā)明還公開了一種數(shù)據(jù)緩存方法。本發(fā)明極大的提高了數(shù)據(jù)讀取的效率,并提高了系統(tǒng)的運(yùn)行效率。
【IPC分類】H04L29/06
【公開號(hào)】CN105306457
【申請(qǐng)?zhí)枴緾N201510644243
【發(fā)明人】倪秉炬
【申請(qǐng)人】努比亞技術(shù)有限公司
【公開日】2016年2月3日
【申請(qǐng)日】2015年9月30日