緩存存儲(chǔ)或者進(jìn)行本地存儲(chǔ)相比,本發(fā)明通過(guò)將緩存存儲(chǔ)與本地存儲(chǔ)相結(jié)合的方式對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ),當(dāng)需要存儲(chǔ)的數(shù)據(jù)量較小時(shí),對(duì)數(shù)據(jù)進(jìn)行緩存存儲(chǔ),降低本地存儲(chǔ)數(shù)據(jù)時(shí)對(duì)數(shù)據(jù)進(jìn)行I/O操作的次數(shù),從而減小內(nèi)存開(kāi)銷(xiāo),當(dāng)需要存儲(chǔ)的數(shù)據(jù)量較大時(shí),再將緩存中的數(shù)據(jù)存儲(chǔ)在本地,提高了數(shù)據(jù)存儲(chǔ)的效率。
[0033]進(jìn)一步地,本發(fā)明實(shí)施例提供另一種數(shù)據(jù)存儲(chǔ)方法,如圖2所示,所述方法包括:
[0034]201、獲取在緩存中待存儲(chǔ)的數(shù)據(jù)。
[0035]其中,所述待緩存的數(shù)據(jù)可以為各個(gè)移動(dòng)終端中應(yīng)用軟件收集的打點(diǎn)數(shù)據(jù)或異常數(shù)據(jù)。打點(diǎn)數(shù)據(jù)可以為點(diǎn)擊某條新聞的次數(shù),也可以為用戶使用某瀏覽器的次數(shù)等,本發(fā)明實(shí)施例不做限定。例如,用戶在登錄某新聞網(wǎng)站時(shí),系統(tǒng)每隔一段時(shí)間對(duì)用戶點(diǎn)擊某條新聞的次數(shù)進(jìn)行采集,收集的數(shù)據(jù)即為打點(diǎn)數(shù)據(jù)。異常數(shù)據(jù)可以為用戶在使用某應(yīng)用軟件時(shí),系統(tǒng)提示運(yùn)行錯(cuò)誤生成的數(shù)據(jù),也可以是用戶下載文件失敗生成的數(shù)據(jù),本發(fā)明實(shí)施例不做限定。例如,用戶在使用Word導(dǎo)出表格時(shí),導(dǎo)出錯(cuò)誤或異常所產(chǎn)生的數(shù)據(jù),即為異常數(shù)據(jù)。
[0036]對(duì)于本發(fā)明實(shí)施例,所述獲取待緩存的數(shù)據(jù)具體可以為:首先建立數(shù)據(jù)收集功能接口,然后通過(guò)數(shù)據(jù)收集功能接口獲取待緩存的數(shù)據(jù),其中,建立的數(shù)據(jù)收集功能接口的數(shù)量和類(lèi)型可以滿足對(duì)不同類(lèi)型的數(shù)據(jù)進(jìn)行獲取。
[0037]202、判斷當(dāng)前緩存中存儲(chǔ)的數(shù)據(jù)與所述待存儲(chǔ)的數(shù)據(jù)的數(shù)據(jù)量之和是否大于或等于預(yù)設(shè)閾值。
[0038]其中,所述預(yù)設(shè)閾值可以為1、2、10、15條數(shù)據(jù)等,本發(fā)明實(shí)施例不做限定。具體可以根據(jù)接收的數(shù)據(jù)在緩存中能存儲(chǔ)的最佳值設(shè)置,也可以根據(jù)人為經(jīng)驗(yàn)設(shè)置,具體預(yù)設(shè)閾值可以根據(jù)數(shù)據(jù)收集的需求靈活進(jìn)行配置。例如預(yù)設(shè)閾值為10,即緩存中可以存儲(chǔ)的數(shù)據(jù)量的最大值為10條,此時(shí),判斷當(dāng)前緩存中存儲(chǔ)的數(shù)據(jù)與所述待存儲(chǔ)的數(shù)據(jù)量之和是否大于或等于10條。
[0039]對(duì)于本發(fā)明實(shí)施例,步驟202之前還可以包括識(shí)別待存儲(chǔ)的所述數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)類(lèi)別,所述數(shù)據(jù)類(lèi)別可以為打點(diǎn)數(shù)據(jù)、異常數(shù)據(jù)等類(lèi)別,本發(fā)明實(shí)施例不做限定。其中,所述識(shí)別待存儲(chǔ)的所述數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)類(lèi)別是將獲取的雜亂的數(shù)據(jù)進(jìn)行區(qū)分,按打點(diǎn)數(shù)據(jù)和異常數(shù)據(jù)類(lèi)別區(qū)分后,將對(duì)應(yīng)的數(shù)據(jù)傳輸?shù)綄?duì)應(yīng)的功能接口。
[0040]對(duì)于本發(fā)明實(shí)施例,所述識(shí)別待存儲(chǔ)的所述數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)類(lèi)別具體可以為:首先,從數(shù)據(jù)集中的數(shù)據(jù)識(shí)別出打點(diǎn)數(shù)據(jù)或異常數(shù)據(jù),然后根據(jù)不同的類(lèi)別將數(shù)據(jù)通過(guò)對(duì)應(yīng)的接口進(jìn)行接收。例如,首先從數(shù)據(jù)集{點(diǎn)擊某圖片次數(shù)30次,點(diǎn)擊某新聞次數(shù)5次,被網(wǎng)站異常退出的次數(shù)I次}中識(shí)別出打點(diǎn)數(shù)據(jù)為點(diǎn)擊某圖片次數(shù)30次或點(diǎn)擊某新聞次數(shù)5次,異常數(shù)據(jù)為被網(wǎng)站異常退出的次數(shù)I次。當(dāng)需要存儲(chǔ)點(diǎn)擊某圖片次數(shù)30次或點(diǎn)擊某新聞次數(shù)5次時(shí),通過(guò)接收打點(diǎn)數(shù)據(jù)的功能接口 public static void dot (DottingKeykey, int times)進(jìn)行數(shù)據(jù)傳輸,當(dāng)需要存儲(chǔ)被網(wǎng)站異常退出的次數(shù)I次時(shí),通過(guò)接收異常數(shù)據(jù)的功會(huì)泛接□ public static void doterror (Except1nTypes mErrorType, StringmErrorMsg)進(jìn)行數(shù)據(jù)傳輸。
[0041]此時(shí),步驟202具體可以包括:若所述待存儲(chǔ)的所述數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)類(lèi)別為打點(diǎn)數(shù)據(jù),則判斷當(dāng)前緩存中存儲(chǔ)的數(shù)據(jù)與所述待存儲(chǔ)的數(shù)據(jù)的數(shù)據(jù)量之和是否大于或等于第一預(yù)設(shè)閾值;若所述待存儲(chǔ)的所述數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)類(lèi)別為異常數(shù)據(jù),則判斷當(dāng)前緩存中存儲(chǔ)的數(shù)據(jù)與所述待存儲(chǔ)的數(shù)據(jù)的數(shù)據(jù)量之和是否大于或等于第二預(yù)設(shè)閾值。對(duì)于本發(fā)明實(shí)施例,由于不同類(lèi)別的數(shù)據(jù)單條數(shù)據(jù)量不同,因此不同類(lèi)別的數(shù)據(jù)對(duì)應(yīng)的預(yù)設(shè)閾值不同。通過(guò)為不同類(lèi)別的數(shù)據(jù)分別配置不同的預(yù)設(shè)閾值,可以提高對(duì)于緩存中存儲(chǔ)的數(shù)據(jù)量的判斷精度,進(jìn)而進(jìn)一步提升數(shù)據(jù)存儲(chǔ)的效率。
[0042]其中,所述第一預(yù)設(shè)閾值是根據(jù)打點(diǎn)數(shù)據(jù)存儲(chǔ)量設(shè)置,可以為20、21條數(shù)據(jù)等,本發(fā)明實(shí)施例不做限定。例如,若待存儲(chǔ)的數(shù)據(jù)的數(shù)據(jù)類(lèi)型為打點(diǎn)數(shù)據(jù),則可以通過(guò)功能函數(shù)private static final int SAVE_C0UNT = 20,將第一預(yù)設(shè)閾值配置為20。所述第二預(yù)設(shè)閾值是根據(jù)異常數(shù)據(jù)存儲(chǔ)量設(shè)置,可以為2、3、4條數(shù)據(jù)等,本發(fā)明實(shí)施例不做限定。例如,若待存儲(chǔ)的數(shù)據(jù)的數(shù)據(jù)類(lèi)型為打點(diǎn)數(shù)據(jù),則可以通過(guò)功能函數(shù)private static final intSAVE_ERR0R_C0UNT = 3,將第二預(yù)設(shè)閾值配置為3。
[0043]203a、若當(dāng)前緩存中存儲(chǔ)的數(shù)據(jù)與所述待存儲(chǔ)的數(shù)據(jù)的數(shù)據(jù)量之和大于或等于預(yù)設(shè)閾值,則將所述待存儲(chǔ)的數(shù)據(jù)和緩存中的所述數(shù)據(jù)存儲(chǔ)在本地并刪除緩存中的所述數(shù)據(jù)。
[0044]其中,所述當(dāng)前緩存中存儲(chǔ)的數(shù)據(jù)是對(duì)應(yīng)于本次存儲(chǔ)的上一次存儲(chǔ)在緩存中的數(shù)據(jù)且所述數(shù)據(jù)沒(méi)有達(dá)到預(yù)設(shè)閾值。例如,預(yù)設(shè)閾值為15,當(dāng)前待存儲(chǔ)數(shù)據(jù)為30條,緩存中數(shù)據(jù)為10條,待存儲(chǔ)的數(shù)據(jù)和緩存中的之和40條大于預(yù)設(shè)閾值,首先將待存儲(chǔ)在本地的40條數(shù)據(jù)存儲(chǔ)在本地內(nèi)存中,同時(shí)將緩存中數(shù)據(jù)清空。清空后的緩存立即執(zhí)行下一次的判斷。對(duì)于本發(fā)明實(shí)施例,通過(guò)將待存儲(chǔ)的數(shù)據(jù)和緩存中的所述數(shù)據(jù)存儲(chǔ)在本地,實(shí)現(xiàn)緩存存儲(chǔ)與本地存儲(chǔ)的同時(shí)進(jìn)行,避免數(shù)據(jù)丟失。
[0045]對(duì)于本發(fā)明實(shí)施例,所述將所述待存儲(chǔ)的數(shù)據(jù)和緩存中的所述數(shù)據(jù)存儲(chǔ)在本地具體可以為:將所述待存儲(chǔ)的數(shù)據(jù)和緩存中的所述數(shù)據(jù)異步存儲(chǔ)在本地。對(duì)于本發(fā)明實(shí)施例,通過(guò)將所述待存儲(chǔ)的數(shù)據(jù)和緩存中的所述數(shù)據(jù)異步存儲(chǔ)在本地,可以進(jìn)一步提升數(shù)據(jù)的存儲(chǔ)效率。
[0046]與步驟203a并列的步驟203b、若當(dāng)前緩存中存儲(chǔ)的數(shù)據(jù)與所述待存儲(chǔ)的數(shù)據(jù)的數(shù)據(jù)量之和小于預(yù)設(shè)閾值,則將所述待存儲(chǔ)的數(shù)據(jù)存儲(chǔ)在所述緩存中。
[0047]例如,預(yù)設(shè)閾值為30,當(dāng)前緩存中存儲(chǔ)為5條,待存儲(chǔ)的數(shù)據(jù)為10條,緩存中的數(shù)據(jù)與待存儲(chǔ)的數(shù)據(jù)之和為15條,小于預(yù)設(shè)閾值,則待存儲(chǔ)的的10條數(shù)據(jù)存儲(chǔ)在緩存中。對(duì)于本發(fā)明實(shí)施例,通過(guò)將數(shù)據(jù)量之和小于預(yù)設(shè)閾值的待存儲(chǔ)數(shù)據(jù)存儲(chǔ)在緩存中,從而減小數(shù)據(jù)因頻繁操作對(duì)I/O接口造成的負(fù)擔(dān),提高了數(shù)據(jù)存儲(chǔ)的效率。
[0048]204、當(dāng)接收到數(shù)據(jù)上傳指令時(shí),分別從所述緩存中和所述本地中獲取存儲(chǔ)的數(shù)據(jù)。
[0049]其中,所述數(shù)據(jù)上傳指令用于指示將存儲(chǔ)的數(shù)據(jù)上傳到網(wǎng)絡(luò)服務(wù)器。例如,在接收到數(shù)據(jù)上傳命令之前,緩存中的數(shù)據(jù)為5條,本地中的數(shù)據(jù)為50條,當(dāng)接收到上傳命令時(shí),分別獲取存儲(chǔ)在緩存中的5條數(shù)據(jù)與存儲(chǔ)在本地的50條數(shù)據(jù)。
[0050]205、將所述數(shù)據(jù)進(jìn)行上傳。
[0051]對(duì)于本發(fā)明實(shí)施例,通過(guò)將緩存中和所述本地中獲取存儲(chǔ)的數(shù)據(jù)一并進(jìn)行上傳,可以保證進(jìn)行上傳的數(shù)據(jù)的完成性,避免丟失數(shù)據(jù)。
[0052]對(duì)于本發(fā)明實(shí)施例,步驟205之前還可以包括:將所述緩存中存儲(chǔ)的數(shù)據(jù)保存在本地。例如,將數(shù)據(jù)進(jìn)行上傳之前,緩存存儲(chǔ)的數(shù)據(jù)為10條,本地存儲(chǔ)的數(shù)據(jù)為60條,首先將緩存中的10條數(shù)據(jù)存儲(chǔ)在本地,然后將緩存中的10條數(shù)據(jù)和本地中的60條數(shù)據(jù)作為上傳數(shù)據(jù)。對(duì)于本發(fā)明實(shí)施例,在上傳之前,通過(guò)將緩存中的數(shù)據(jù)存儲(chǔ)到本地,可以避免了因上傳時(shí)出現(xiàn)異常情況而導(dǎo)致的緩存中的數(shù)據(jù)丟失,從而進(jìn)一步保證上傳數(shù)據(jù)的完整性。
[0053]對(duì)于本發(fā)明實(shí)施例,具體的應(yīng)用場(chǎng)景可以如下所示,但不限于此,包括:從數(shù)據(jù)集中識(shí)別待存儲(chǔ)數(shù)據(jù)為異常數(shù)據(jù),獲取待存儲(chǔ)的5條異常數(shù)據(jù),當(dāng)前緩存中的異常數(shù)據(jù)為3條,第二預(yù)設(shè)閾值為6,此時(shí)判斷當(dāng)前緩存中存儲(chǔ)的異常數(shù)據(jù)與所述待存儲(chǔ)的異常數(shù)據(jù)之和為8條,大于第二預(yù)設(shè)閾值6條,此時(shí),將緩存中存儲(chǔ)的3條異常數(shù)據(jù)和待存儲(chǔ)的5條異常數(shù)據(jù)存儲(chǔ)在本地?cái)?shù)據(jù)庫(kù)中,并將緩存中的3條異常數(shù)據(jù)刪除,進(jìn)行下一次判斷。重新獲取3條異常數(shù)據(jù),判斷當(dāng)前緩存中存儲(chǔ)的異常數(shù)據(jù)與所述待存儲(chǔ)的數(shù)據(jù)之和為3,小于第二預(yù)設(shè)閾值6條,將待存儲(chǔ)的異常數(shù)據(jù)直接存儲(chǔ)在緩存中。當(dāng)接收到上傳命令時(shí),將緩存中的3條數(shù)據(jù)存儲(chǔ)在本地?cái)?shù)據(jù)庫(kù)中,將本地?cái)?shù)據(jù)庫(kù)中的11條異常數(shù)據(jù)同時(shí)上傳。從而實(shí)現(xiàn)將緩存存儲(chǔ)于本地存儲(chǔ)相結(jié)合的方法進(jìn)行數(shù)據(jù)存儲(chǔ),提高數(shù)據(jù)存儲(chǔ)的效率。
[0054]本發(fā)明實(shí)施例提供的數(shù)據(jù)存儲(chǔ)方法,首先獲取在緩存中待存儲(chǔ)的數(shù)據(jù);然后判斷當(dāng)前緩存中存儲(chǔ)的數(shù)據(jù)與所述待存儲(chǔ)的數(shù)據(jù)的數(shù)據(jù)量之和是否大于或等于預(yù)設(shè)閾值;若當(dāng)前緩存中存儲(chǔ)的數(shù)