一種數(shù)據(jù)緩存和更新的方法和系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,特別涉及一種數(shù)據(jù)緩存和更新的方法和系統(tǒng)。
【背景技術(shù)】
[0002]隨著快速消費(fèi)品行業(yè)SFA(企業(yè)銷售能力自動(dòng)化)的普及,業(yè)務(wù)員利用APP進(jìn)行日常工作信息分享、查看等操作越來(lái)越頻繁。為了提高用戶體驗(yàn),需緩存分享的工作信息,一是在無(wú)網(wǎng)絡(luò)的情況下可以顯示之前的數(shù)據(jù),二是盡量實(shí)現(xiàn)加載過(guò)的數(shù)據(jù)無(wú)需再次請(qǐng)求即可以查看(無(wú)論是有無(wú)網(wǎng)絡(luò)的情況下)。
[0003]現(xiàn)有的數(shù)據(jù)緩存更新的方法,應(yīng)用較多的是基于時(shí)間戳的方法。該方法在本地保存一個(gè)時(shí)間戳,更新完數(shù)據(jù)后把時(shí)間戳置為最新,下次更新時(shí)就只需更新修改時(shí)間大于本地時(shí)間戳的數(shù)據(jù)即可,但每次更新都需要把所有待更新的數(shù)據(jù)更新完才能修改時(shí)間戳,不然會(huì)出現(xiàn)數(shù)據(jù)缺口或數(shù)據(jù)重復(fù)更新。該方法不適合前文所述的場(chǎng)景,業(yè)務(wù)員查看分享信息時(shí),只需顯示最新的一段數(shù)據(jù),然后按需更新數(shù)據(jù),并不一定會(huì)查看全部數(shù)據(jù)。如果采用時(shí)間戳的方法浪費(fèi)了用戶的流量。
【發(fā)明內(nèi)容】
[0004]本發(fā)明提出種數(shù)據(jù)緩存和更新的方法和系統(tǒng),能夠按需更新數(shù)據(jù),并能夠節(jié)省用戶的流量。
[0005]具體方案如下:
[0006]—種數(shù)據(jù)緩存和更新的方法,包括更新最新數(shù)據(jù)、向上更新數(shù)據(jù)以及向下更新數(shù)據(jù)中的一種或多種方式,步驟如下:
[0007]S1:根據(jù)更新方式分別按照不同的協(xié)議請(qǐng)求更新數(shù)據(jù);
[0008]S2:根據(jù)更新方式返回對(duì)應(yīng)符合協(xié)議要求的數(shù)據(jù);
[0009]S3:將返回的數(shù)據(jù)寫入內(nèi)容存儲(chǔ)單元;
[0010]S4:更新連續(xù)內(nèi)容ID存儲(chǔ)單元。
[0011 ]其中,所述的更新最新數(shù)據(jù)的具體步驟是:
[0012]SlOl:按照第一請(qǐng)求協(xié)議請(qǐng)求到內(nèi)容提供者請(qǐng)求最新數(shù)據(jù),第一請(qǐng)求協(xié)議包括本地內(nèi)容緩存所屬的設(shè)備的ID、內(nèi)容存儲(chǔ)單元里最大的內(nèi)容ID、更新最新數(shù)據(jù)標(biāo)識(shí)、更新數(shù)據(jù)的數(shù)量limit;
[0013]S102:內(nèi)容提供者查找并返回內(nèi)容ID大于本地內(nèi)容緩存內(nèi)容存儲(chǔ)單元里最大的內(nèi)容ID,且設(shè)備ID等于本地內(nèi)容緩存所屬的設(shè)備ID的內(nèi)容,如果查找的內(nèi)容大于limit條,則只返回內(nèi)容ID最大的前I imi t條,由內(nèi)容ID的遞增性保證返回的內(nèi)容的連續(xù)性;
[0014]S103:將返回的內(nèi)容寫進(jìn)內(nèi)容存儲(chǔ)單元;
[0015]S104:更新連續(xù)內(nèi)容ID存儲(chǔ)單元:
[0016]若更新條數(shù)小于第一協(xié)議中更新數(shù)據(jù)的數(shù)量,且連續(xù)內(nèi)容ID存儲(chǔ)單元有記錄,則查找連續(xù)內(nèi)容的最大內(nèi)容ID的一條記錄,將連續(xù)內(nèi)容的最大內(nèi)容ID更新為返回內(nèi)容中的最大內(nèi)容ID,若更新條數(shù)小于第一協(xié)議中更新數(shù)據(jù)的數(shù)量,且連續(xù)內(nèi)容ID存儲(chǔ)單元沒(méi)有記錄,則插入一條記錄,連續(xù)內(nèi)容的最大內(nèi)容ID為返回內(nèi)容中的最大內(nèi)容ID,連續(xù)內(nèi)容的最大內(nèi)容ID為請(qǐng)求應(yīng)答中的最小內(nèi)容ID;
[0017 ]若更新條數(shù)等于第一協(xié)議中更新數(shù)據(jù)的數(shù)量,直接在連續(xù)內(nèi)容ID存儲(chǔ)單元插入一條記錄,連續(xù)內(nèi)容的最大內(nèi)容ID為返回內(nèi)容中的最大內(nèi)容ID,連續(xù)內(nèi)容的最大內(nèi)容ID為請(qǐng)求應(yīng)答中的最小內(nèi)容ID。
[0018]其中,向上更新數(shù)據(jù)的具體步驟是:
[0019]S201:按照第二請(qǐng)求協(xié)議請(qǐng)求到內(nèi)容提供者請(qǐng)求最新數(shù)據(jù),第二請(qǐng)求協(xié)議包括本地內(nèi)容緩存所屬的設(shè)備的ID、內(nèi)容存儲(chǔ)單元里最大的內(nèi)容ID、向上更新數(shù)據(jù)標(biāo)識(shí)、更新數(shù)據(jù)的數(shù)量limit;
[0020]S202:內(nèi)容提供者查找并返回內(nèi)容ID大于本地內(nèi)容緩存內(nèi)容存儲(chǔ)單元里最大的內(nèi)容ID,且設(shè)備ID等于本地內(nèi)容緩存所屬的設(shè)備ID的內(nèi)容,如果查找的內(nèi)容大于limit條,則只返回內(nèi)容ID最小的前I imi t條,由內(nèi)容ID的遞增性保證返回的內(nèi)容的連續(xù)性;
[0021]S203:將返回的內(nèi)容寫進(jìn)內(nèi)容存儲(chǔ)單元;
[0022]S204:更新連續(xù)內(nèi)容ID存儲(chǔ)單元:
[0023]若連續(xù)內(nèi)容ID存儲(chǔ)單元有記錄,則查找連續(xù)內(nèi)容的最大內(nèi)容ID的一條記錄,將連續(xù)內(nèi)容的最大內(nèi)容ID更新為返回內(nèi)容中的最大內(nèi)容ID;
[0024]若連續(xù)內(nèi)容ID存儲(chǔ)單元沒(méi)有記錄,則插入一條記錄,連續(xù)內(nèi)容的最大內(nèi)容ID為返回內(nèi)容中的最大內(nèi)容ID,連續(xù)內(nèi)容的最大內(nèi)容ID為請(qǐng)求應(yīng)答中的最小內(nèi)容ID。
[0025]其中,向下更數(shù)據(jù)的具體步驟是:
[0026]S301:判斷當(dāng)前所在內(nèi)容的內(nèi)容ID與連續(xù)內(nèi)容ID存儲(chǔ)單元當(dāng)中連續(xù)內(nèi)容的最小內(nèi)容ID是否相等,所述的連續(xù)內(nèi)容的最小內(nèi)容ID為連續(xù)內(nèi)容的最大內(nèi)容ID最大記錄所對(duì)應(yīng),如果兩者不相等,則直接加載內(nèi)容存儲(chǔ)單元中內(nèi)容ID在兩者之間的內(nèi)容,如果兩者相等,則按照第三請(qǐng)求協(xié)議請(qǐng)求到內(nèi)容提供者請(qǐng)求最新數(shù)據(jù),第三請(qǐng)求協(xié)議包括本地內(nèi)容緩存所屬的設(shè)備的ID、當(dāng)前所在的內(nèi)容的ID、向下更新數(shù)據(jù)標(biāo)識(shí)、連續(xù)內(nèi)容ID存儲(chǔ)單元里小于當(dāng)前所在的內(nèi)容的ID的最大連續(xù)內(nèi)容的最大內(nèi)容ID minContentld、更新數(shù)據(jù)的數(shù)量limit;
[0027]S303:內(nèi)容提供者查找并返回內(nèi)容ID大于minContentld,且小于當(dāng)前所在的內(nèi)容的ID且設(shè)備ID等于本地內(nèi)容緩存所屬的設(shè)備ID的內(nèi)容,如果查找的內(nèi)容大于I imi t條,則只返回內(nèi)容ID最大的前I imi t條,由內(nèi)容ID的遞增性保證返回的內(nèi)容的連續(xù)性;
[0028]S304:將返回的內(nèi)容寫進(jìn)內(nèi)容存儲(chǔ)單元;
[0029]S305:更新連續(xù)內(nèi)容ID存儲(chǔ)單元:
[0030]若更新條數(shù)小于第三協(xié)議中更新數(shù)據(jù)的數(shù)量,則合并連續(xù)內(nèi)容ID存儲(chǔ)單元里連續(xù)內(nèi)容的最大內(nèi)容ID最大的兩條記錄,如果連續(xù)內(nèi)容ID存儲(chǔ)單元里只有一條記錄,則更新記錄的連續(xù)內(nèi)容的最小內(nèi)容ID為返回內(nèi)容中最小的內(nèi)容ID;
[0031]若更新條數(shù)等于第三協(xié)議中更新數(shù)據(jù)的數(shù)量,則更新連續(xù)內(nèi)容ID存儲(chǔ)單元中連續(xù)內(nèi)容的最大內(nèi)容ID最大的記錄的連續(xù)內(nèi)容的最小內(nèi)容ID為返回內(nèi)容中的最小的內(nèi)容ID。
[0032]其中,本地內(nèi)容緩存所屬的設(shè)備的ID具有唯一性。
[0033]—種數(shù)據(jù)緩存和更新的系統(tǒng),包括:內(nèi)容提供者存儲(chǔ)單元、本地內(nèi)容緩存模塊,所述的內(nèi)容提供者存儲(chǔ)單元存儲(chǔ)內(nèi)容提供者提供的內(nèi)容,并由ID能唯一識(shí)別出內(nèi)容,且ID依次遞增,并標(biāo)識(shí)該內(nèi)容所屬的設(shè)備ID,
[0034]所述的本地內(nèi)容緩存模塊包括內(nèi)容存儲(chǔ)單元、連續(xù)內(nèi)容ID存儲(chǔ)單元、控制模塊,所述的內(nèi)容存儲(chǔ)單元存儲(chǔ)與所述的內(nèi)容提供者存儲(chǔ)單元中對(duì)應(yīng)的內(nèi)容,并與內(nèi)容提供者存儲(chǔ)單元中的內(nèi)容ID對(duì)應(yīng),
[0035]所述的連續(xù)內(nèi)容ID存儲(chǔ)單元存儲(chǔ)連續(xù)內(nèi)容的最大內(nèi)容ID及連續(xù)內(nèi)容的最小內(nèi)容ID,
[0036]所述的控制模塊按照不同的請(qǐng)求協(xié)議請(qǐng)求數(shù)據(jù),將返回的內(nèi)容寫進(jìn)內(nèi)容存儲(chǔ)單元,并更新連續(xù)內(nèi)容ID存儲(chǔ)單元。
[0037]與現(xiàn)有技術(shù)相比,本發(fā)明所采用的數(shù)據(jù)緩存更新方法,能夠減少數(shù)據(jù)的重復(fù)更新,并且當(dāng)共享的信息很多時(shí),能按需更新信息,減少不必要信息的更新。
【附圖說(shuō)明】
[0038]圖1為實(shí)施例內(nèi)容提供者的存儲(chǔ)單元的數(shù)據(jù)結(jié)構(gòu);
[0039]圖2為實(shí)施例內(nèi)容存儲(chǔ)單元的數(shù)據(jù)結(jié)構(gòu);
[0040]圖3為實(shí)施例連續(xù)內(nèi)容ID存儲(chǔ)單元的數(shù)據(jù)結(jié)構(gòu);
[0041 ]圖4為實(shí)施例請(qǐng)求更新協(xié)議字段說(shuō)明圖;
[0042]圖5為實(shí)施例返回請(qǐng)求應(yīng)答協(xié)議的字段說(shuō)明圖;
[0043]圖6為實(shí)施例數(shù)據(jù)緩存更新方法大致流程圖。
【具體實(shí)施方式】
[0044]為進(jìn)一步說(shuō)明各實(shí)施例,本發(fā)明提供有附圖。這些附圖為本發(fā)明揭露內(nèi)容的一部分,其主要用以說(shuō)明實(shí)施例,并可配合說(shuō)明書(shū)的相關(guān)描述來(lái)解釋實(shí)施例的運(yùn)作原理。配合參考這些內(nèi)容,本領(lǐng)域普通技術(shù)人員應(yīng)能理解其他可能的實(shí)施方式以及本發(fā)明的優(yōu)點(diǎn)?,F(xiàn)結(jié)合附圖和【具體實(shí)施方式】對(duì)本發(fā)明進(jìn)一步說(shuō)明。
[0045]本實(shí)施例的數(shù)據(jù)緩存更新系統(tǒng)包括:內(nèi)容提供者存儲(chǔ)單元、本地內(nèi)容緩存模塊。
[0046]結(jié)合圖1,示出了內(nèi)容提供者的存儲(chǔ)單元的數(shù)據(jù)結(jié)構(gòu),包括content Id、deviceld、content三個(gè)字段,分別對(duì)應(yīng)內(nèi)容IcU設(shè)備IcU內(nèi)容,其中內(nèi)容由contentld唯一識(shí)別,并且content Id是遞增的,并標(biāo)識(shí)該內(nèi)容所屬的deviceld content Id、deviceld均為整型,content為字符串類型。
[0047]本地內(nèi)容緩存模塊包括內(nèi)容存儲(chǔ)單元、連續(xù)內(nèi)容ID存儲(chǔ)單元、控制模塊,
[0048]結(jié)合圖2,示出了內(nèi)容存儲(chǔ)單元的數(shù)據(jù)結(jié)構(gòu),包括contentId、content字段,分別對(duì)應(yīng)內(nèi)容Id、內(nèi)容,其中內(nèi)容由contentld唯一識(shí)別,并且contentld是遞增的,與內(nèi)容提供者的存儲(chǔ)單元中的content Id、content字段具有對(duì)應(yīng)的關(guān)系。content Id為整型。
[0049]結(jié)合圖3,示出了連續(xù)內(nèi)容ID存儲(chǔ)單元的數(shù)據(jù)結(jié)構(gòu),包括maxContentld、minContentld字段,分別連續(xù)內(nèi)容的最大內(nèi)容Id、連續(xù)內(nèi)容的最小內(nèi)容Id,maxContent Id、minContentld均為整型,連續(xù)內(nèi)容ID存儲(chǔ)單元中的每一字段所對(duì)應(yīng)的數(shù)據(jù)會(huì)隨著整體數(shù)據(jù)的更新而發(fā)生變化。
[0050]控制模塊按照不同的請(qǐng)求協(xié)議請(qǐng)求數(shù)據(jù),將返回的內(nèi)容寫進(jìn)內(nèi)容存儲(chǔ)單元,并更新連續(xù)內(nèi)容ID存儲(chǔ)單元。
[0051]本領(lǐng)域的技術(shù)人員應(yīng)該知道,上述的系統(tǒng)中各數(shù)據(jù)結(jié)構(gòu)的字段命名并不作限定,但不能脫離該字段所代表的意義,而對(duì)應(yīng)的數(shù)據(jù)類型也可根據(jù)實(shí)際適當(dāng)進(jìn)行改變。
[0052]基于上述的數(shù)據(jù)緩存更新系統(tǒng),本實(shí)施例的數(shù)據(jù)緩存更新方法如下:該實(shí)施例中采用的本地內(nèi)容緩存到內(nèi)容提供者的請(qǐng)求更新的協(xié)議大致如下:
[0053]{
[0054]deviceld:1,contentld:O,direct1n:O,minContentld:O, limit:O
[0055]}
[0056]結(jié)合圖4,示出了各字段表述的含義,其中deviceld為本地內(nèi)容緩存所屬的設(shè)備的1(1,代€6代1106(]01^6111:1(1為參照內(nèi)容10,(1;[代(31:;[011為數(shù)據(jù)更新的方向,以值為O時(shí)對(duì)應(yīng)最新的數(shù)據(jù),值為I時(shí)對(duì)應(yīng)向上更新數(shù)據(jù),值為2時(shí)對(duì)應(yīng)向下更新數(shù)據(jù),minContent I d為更新時(shí)的結(jié)束Id,該字段盡在向下更新數(shù)據(jù)時(shí)有效,limit為更新數(shù)據(jù)的數(shù)量。
[0057]內(nèi)容提供者返回給本地內(nèi)容緩存的請(qǐng)求應(yīng)答的協(xié)議大致如下:
[0058][{contentld:1,content:HeIΙο},{contentld:2,content:World}]
[0059]結(jié)合圖5,示出了返回請(qǐng)求應(yīng)答協(xié)議的各字段說(shuō)明。
[0060]本領(lǐng)域的技術(shù)人員應(yīng)該知道,協(xié)議中字段的的字段命名并不作限定,但不脫離該字段所代表的意義,而對(duì)數(shù)據(jù)更新方向的標(biāo)識(shí)值在保證各標(biāo)識(shí)互不相同的情況下也可做適當(dāng)?shù)母淖儭?br>[0061]本實(shí)施例的數(shù)據(jù)緩存更新方法包括更新最新數(shù)據(jù)、向上更新數(shù)據(jù)以及向下更新數(shù)據(jù)的方式,結(jié)合圖6