本發(fā)明涉及信息存儲技術(shù),具體涉及一種基于遠程字典服務(wù)器的數(shù)據(jù)存儲方法及系統(tǒng)。
背景技術(shù):
隨著社會進步及科技的發(fā)展,互聯(lián)網(wǎng)技術(shù)也得到飛速的發(fā)展,尤其是進入互聯(lián)網(wǎng)+時代后,互聯(lián)網(wǎng)企業(yè)在伴隨其業(yè)務(wù)飛速發(fā)展的同時,用戶需求也越來越復(fù)雜且多變,進而會產(chǎn)生巨量的數(shù)據(jù)信息,而采用傳統(tǒng)的存儲方案對巨量數(shù)據(jù)信息的存儲又無法滿足網(wǎng)絡(luò)應(yīng)用平臺及用戶體驗。
遠程字典服務(wù)器(REDIS,Remote DIctionary Server)是一個鍵值(key-value)存儲系統(tǒng),支持存儲字符串(string)、鏈表(list)、集合(set)、有序集合(zset-sortedset)和哈希(hash)等value類型。同時這些數(shù)據(jù)類型都支持推進/彈出(push/pop)、添加/移除(add/remove)及取交集并集和差集等更豐富的原子性操作指令。為了保證效率,REDIS數(shù)據(jù)都是緩存在內(nèi)存中,并且REDIS會周期性的把更新的數(shù)據(jù)寫入磁盤、或者把修改操作指令寫入追加的記錄文件,從而能夠?qū)崿F(xiàn)主盤和從盤(master-slave)同步。
由于現(xiàn)有的REDIS緩存技術(shù)對鍵值采用一致性哈希算法,將數(shù)據(jù)平均存儲到各個緩存服務(wù)器中,然后在鍵值所在的緩存服務(wù)器進行數(shù)據(jù)訪問。而采用這樣的數(shù)據(jù)存儲方法,會存在以下缺點:
1、在密集數(shù)據(jù)訪問的應(yīng)用上,REDIS緩存技術(shù)傳輸時延嚴重,影響用戶感知。比如:一個操作接口需要查詢REDIS緩存1000次,且每次傳輸時延為1毫秒(millisecond),則所述操作接口的操作時延將增加1秒(second)。
2、在高并發(fā)數(shù)據(jù)訪問的情形下,REDIS緩存技術(shù)的丟包概率較大。
技術(shù)實現(xiàn)要素:
為解決現(xiàn)有存在的技術(shù)問題,本發(fā)明實施例期望提供一種基于遠程字典服務(wù)器的數(shù)據(jù)存儲方法及系統(tǒng),能夠提高數(shù)據(jù)傳輸速度,同時能夠避免數(shù)據(jù)包丟失。
本發(fā)明實施例的技術(shù)方案是這樣實現(xiàn)的:
根據(jù)本發(fā)明實施例的一方面,提供一種基于遠程字典服務(wù)器的數(shù)據(jù)存儲方法,所述方法包括:
獲取第一對象REDIS或第二對象REDIS緩存的實體對象和參考對象,其中,所述第一對象REDIS位于第一數(shù)據(jù)中心,所述第二對象REDIS位于第二數(shù)據(jù)中心;
確定所述實體對象的版本號低于所述參考對象的版本號時,獲取第一版本號REDIS分配的新版本號,并根據(jù)所述新版本號獲取第一數(shù)據(jù)庫重新加載的新實體對象,其中,所述第一版本號REDIS和所述第一數(shù)據(jù)庫位于所述第一數(shù)據(jù)中心;
同步更新所述第一對象REDIS和所述第二對象REDIS緩存的實體對象為所述新實體對象。
上述方案中,所述獲取第一對象REDIS或第二對象REDIS緩存的實體對象和參考對象,包括:
通過REDIS的JAVA業(yè)務(wù)模塊內(nèi)容中心的類Jedis Wrapper向本站點內(nèi)第一對象REDIS或第二對象REDIS發(fā)送對象獲取請求;
接收所述第一對象REDIS或所述第二對象REDIS根據(jù)所述對象獲取請求發(fā)送的實體對象和參考對象。
上述方案中,所述獲取第一版本號REDIS分配的新版本號,包括:
向所述第一版本號REDIS發(fā)送新版本號獲取請求;
接收所述第一版本號REDIS根據(jù)新版本號獲取請求分配的新版本號,所述新版本號高于所述參考對象的版本號。
上述方案中,所述根據(jù)所述新版本號獲取第一數(shù)據(jù)庫重新加載的新實體對象,包括:
向所述第一數(shù)據(jù)庫發(fā)送對象加載請求,所述對象加載請求中攜帶有所述新版本號;
接收所述第一數(shù)據(jù)庫根據(jù)所述對象加載請求重新加載的新實體對象。
上述方案中,所述同步更新所述第一對象REDIS和所述第二對象REDIS緩存的實體對象為所述新實體對象,包括:
通過所述Jedis Wrapper同步更新所述第一對象REDIS和所述第二對象REDIS緩存的實體對象為所述新實體對象。
上述方案中,在所述獲取第一版本號REDIS分配的新版本號之后,所述方法還包括:
將所述新版本號同步更新到第二版本號REDIS,所述第二版本號REDIS位于所述第二數(shù)據(jù)中心。
上述方案中,在所述根據(jù)所述新版本號獲取第一數(shù)據(jù)庫重新加載的新實體對象之后,所述方法還包括:
將所述新實體對象同步更新到第二數(shù)據(jù)庫,所述第二數(shù)據(jù)庫位于所述第二數(shù)據(jù)中心。
根據(jù)本發(fā)明實施例的另一方面,提供一種基于遠程字典服務(wù)器的數(shù)據(jù)存儲系統(tǒng),所述系統(tǒng)包括:位于第一數(shù)據(jù)中心的第一內(nèi)容服務(wù)器、第一對象REDIS、第一版本號REDIS、第一數(shù)據(jù)庫,以及位于第二數(shù)據(jù)中心的第二內(nèi)容服務(wù)器和第二對象REDIS;其中,
所述第一對象REDIS或所述第二對象REDIS,用于緩存實體對象和參考對象;
所述第一版本號REDIS,用于分配新版本號;
所述第一內(nèi)容服務(wù)器或所述第二內(nèi)容服務(wù)器,用于獲取第一對象REDIS或所述第二對象REDIS緩存的實體對象和參考對象;確定所述實體對象的版本號低于所述參考對象的版本號時,獲取所述第一版本號REDIS分配的新版本號,并根據(jù)所述新版本號獲取所述第一數(shù)據(jù)庫重新加載的新實體對象;同步更新所述第一對象REDIS和所述第二對象REDIS緩存的實體對象為所述新實體對象。
上述方案中,所述第一內(nèi)容服務(wù)器或所述第二內(nèi)容服務(wù)器,具體用于通過Jedis Wrapper向本站點內(nèi)第一對象REDIS或第二對象REDIS發(fā)送對象獲取請求,接收所述第一對象REDIS或第二對象REDIS根據(jù)所述對象獲取請求發(fā)送的實體對象和參考對象。
上述方案中,所述第一內(nèi)容服務(wù)器或所述第二內(nèi)容服務(wù)器,具體還用于向所述第一版本號REDIS發(fā)送新版本號獲取請求,接收所述第一版本號REDIS根據(jù)所述新版本號獲取請求分配的新版本號,所述新版本號高于所述參考對象的版本號。
上述方案中,所述第一內(nèi)容服務(wù)器或所述第二內(nèi)容服務(wù)器,具體還用于向所述第一數(shù)據(jù)庫發(fā)送對象加載請求,所述對象加載請求中攜帶有所述新版本號;接收所述第一數(shù)據(jù)庫根據(jù)所述對象加載請求重新加載的新實體對象。
上述方案中,所述第一內(nèi)容服務(wù)器或所述第二內(nèi)容服務(wù)器,具體用于通過Jedis Wrapper同步更新所述第一對象REDIS和所述第二對象REDIS緩存的實體對象為所述新實體對象。
上述方案中,所述系統(tǒng)還包括第二版本號REDIS;
所述第一內(nèi)容服務(wù)器或所述第二內(nèi)容服務(wù)器,具體還用于將所述新版本號同步更新到第二版本號REDIS,所述第二版本號REDIS位于所述第二數(shù)據(jù)中心。
上述方案中,所述系統(tǒng)還包括第二數(shù)據(jù)庫;
所述第一內(nèi)容服務(wù)器或所述第二內(nèi)容服務(wù)器,具體還用于將所述新實體對象同步更新到第二數(shù)據(jù)庫,所述第二數(shù)據(jù)庫位于所述第二數(shù)據(jù)中心。
本發(fā)明實施例提供一種基于遠程字典服務(wù)器的數(shù)據(jù)存儲方法及系統(tǒng),通過獲取第一對象REDIS或第二對象REDIS緩存的實體對象和參考對象,其中,所述第一對象REDIS位于第一數(shù)據(jù)中心,所述第二對象REDIS位于第二數(shù)據(jù)中心;確定所述實體對象的版本號低于所述參考對象的版本號時,獲取第一版本號REDIS分配的新版本號,并根據(jù)所述新版本號獲取第一數(shù)據(jù)庫重新加載的新實體對象,其中,所述第一版本號REDIS和所述第一數(shù)據(jù)庫位于所述第一數(shù)據(jù)中心;同步更新所述第一對象REDIS和所述第二對象REDIS緩存的實體對象為所述新實體對象。如此,在執(zhí)行讀緩存操作時,只讀取本站點內(nèi)的REDIS服務(wù)器,而在執(zhí)行寫緩存操作時,則采用雙寫的方法,同步更新雙數(shù)據(jù)中心的REDIS服務(wù)器,使得雙數(shù)據(jù)中心的REDIS服務(wù)器在相同的鍵值里保持存儲的數(shù)據(jù)相同。這樣,能夠提高數(shù)據(jù)傳輸速度同時能夠避免數(shù)據(jù)包丟失。
附圖說明
圖1為本發(fā)明實施例一種基于遠程字典服務(wù)器的數(shù)據(jù)存儲方法的流程示意圖;
圖2為本發(fā)明實施例中REDIS執(zhí)行緩存讀取的流程示意圖;
圖3為本發(fā)明實施例一種基于遠程字典服務(wù)器的數(shù)據(jù)存儲系統(tǒng)的結(jié)構(gòu)組成示意圖。
具體實施方式
下面結(jié)合附圖對本發(fā)明的具體實施方式進行詳細說明。應(yīng)當(dāng)理解的是,此處所描述的具體實施方式僅用于說明和解釋本發(fā)明,并不用于限制本發(fā)明。
圖1為一種基于遠程字典服務(wù)器的數(shù)據(jù)存儲方法的流程示意圖;如圖1所示,該方法包括:
步驟101,獲取第一對象REDIS或第二對象REDIS緩存的實體對象和參考對象,其中,所述第一對象REDIS位于第一數(shù)據(jù)中心,所述第二對象REDIS位于第二數(shù)據(jù)中心;
本發(fā)明實施例的方法主要應(yīng)用在雙數(shù)據(jù)中心,所述雙數(shù)據(jù)中心包括第一數(shù)據(jù)中心和第二數(shù)據(jù)中心,其中,所述第一對象REDIS位于所述第一數(shù)據(jù)中心,所述第二對象REDIS位于所述第二數(shù)據(jù)中心。
在本發(fā)明實施例中,所述第一對象REDIS和所述第二對象REDIS可以是單臺REDIS服務(wù)器,也可以是多臺REDIS服務(wù)器組成的REDIS服務(wù)器集群。
具體地,所述第一數(shù)據(jù)中心的第一內(nèi)容服務(wù)器通過REDIS的JAVA業(yè)務(wù)模塊內(nèi)容中心的類(Jedis Wrapper)向本站點內(nèi)第一對象REDIS發(fā)送對象獲取請求,所述第一對象REDIS接收到所述對象獲取請求后,根據(jù)所述對象獲取請求向所述第一內(nèi)容服務(wù)器發(fā)送實體對象和參考對象?;蛘撸龅诙?shù)據(jù)中心的第二內(nèi)容服務(wù)器通過Jedis Wrapper向本站點內(nèi)第二對象REDIS發(fā)送對象獲取請求,所述第二對象REDIS接收到所述對象獲取請求后,根據(jù)所述對象獲取請求向所述第二內(nèi)容服務(wù)器發(fā)送實體對象和參考對象。
這里,所述實體對像和參考對象都是實體類的一個實例。具體地,實體是用于傳遞數(shù)據(jù)的一種數(shù)據(jù)載體,在三層架構(gòu)(3-tier architecture)中會分一個實體層,而數(shù)據(jù)庫中的每一張表叫做實體集,在程序中為了消除數(shù)據(jù)庫的關(guān)系模型,使之面向?qū)ο螅瑫?shù)據(jù)庫中的表各寫一個實體,而實體對像和參考對象就是實體類的一個實例。
步驟102,確定所述實體對象的版本號低于所述參考對象的版本號時,獲取第一版本號REDIS分配的新版本號,并根據(jù)所述新版本號獲取第一數(shù)據(jù)庫重新加載的新實體對象,其中,所述第一版本號REDIS和所述第一數(shù)據(jù)庫位于所述第一數(shù)據(jù)中心;
這里,所述第一數(shù)據(jù)中心或所述第二數(shù)據(jù)中心獲取到本站點內(nèi)第一對象REDIS或第二對象REDIS緩存的實體對象和參考對象后,確定所述實體對象和所述參考對象的版本號,并將所述實體對象的版本號與所述參考對象的版本號進行比對,得到比對結(jié)果,根據(jù)所述比對結(jié)果確定所述實體對象是否處于有效的緩存狀態(tài)。
具體地,當(dāng)根據(jù)所述比對結(jié)果確定所述實體對象的版本號低于所述參考對象的版本號時,確定所述實體對象的緩存狀態(tài)為失效狀態(tài),則向所述第一數(shù)據(jù)中心的第一版本號REDIS發(fā)送新版本號獲取請求,所述第一版本號REDIS根據(jù)所述新版本號獲取請求,向所述第一數(shù)據(jù)中心或所述第二數(shù)據(jù)中心發(fā)送新版本號。
這里,所述新版本號高于所述參考對象的版本號;所述第一數(shù)據(jù)中心或所述第二數(shù)據(jù)中心獲取到所述新版本號后,將所述新版本號同步更新到第二數(shù)據(jù)中心的第二版本號REDIS,并向第一數(shù)據(jù)中心的第一數(shù)據(jù)庫發(fā)送對象加載請求,其中,所述對象加載請求中攜帶有所述新版本號。所述第一數(shù)據(jù)庫接收到所述對象加載請求后,根據(jù)所述對象加載請求重新加載實體對象,并將重新加載的新實體對象發(fā)送給所述第一數(shù)據(jù)中心或所述第二數(shù)據(jù)中心,所述第一數(shù)據(jù)中心或所述第二數(shù)據(jù)中心接收到所述新實體對象后,將所述新實體對象同步更新到所述第二數(shù)據(jù)中心的第二數(shù)據(jù)庫。這里,采用在異地部署一個一模一樣的第二版本號REDIS和第二數(shù)據(jù)庫實現(xiàn)冷備容災(zāi)方案,可以在所述第一版本號REDIS和第一數(shù)據(jù)庫所處的地理位置發(fā)生自然災(zāi)害,導(dǎo)致當(dāng)前數(shù)據(jù)庫發(fā)生災(zāi)難時,所述第二版本號REDIS和所述第二數(shù)據(jù)庫可以立馬頂替工作,保證業(yè)務(wù)不間斷運行。
在本發(fā)明實施例中,所述第一對象REDIS、所述第二對象REDIS、所述第一版本號REDIS和所述第二版本號REDIS可以分別是由一臺REDIS服務(wù)器組成,也可以分別是由多臺REDIS服務(wù)器組成的版本號REDIS服務(wù)器集群。
步驟103,同步更新所述第一對象REDIS和所述第二對象REDIS緩存的實體對象為所述新實體對象。
這里,為了保證第一對象REDIS和所述第二對象REDIS在相同的key里存入的內(nèi)容相同,所述第一數(shù)據(jù)中心或所述第二數(shù)據(jù)中心接收到所述第一數(shù)據(jù)庫重新加載的新實體對象后,通過所述Jedis Wrapper同步更新所述第一對象REDIS和所述第二對象REDIS緩存的實體對象為所述新實體對象。
圖2為本發(fā)明實施例中REDIS執(zhí)行緩存讀取的流程示意圖;如圖2所示,以第二數(shù)據(jù)中心為例進行詳細說明,具體流程包括:
步驟201,第二數(shù)據(jù)中心的第二內(nèi)容服務(wù)器向本站點內(nèi)的緩存中心發(fā)送讀取緩存實體對象的請求;
步驟202,所述緩存中心接收所述讀取緩存實體對象的請求,并向本站點內(nèi)的Jedis Wrapper發(fā)送所述讀取緩存實體對象的請求;
步驟203,所述Jedis Wrapper接收所述讀取緩存實體對象的請求,并將所述讀取緩存實體對象的請求路由至本站點的第二對象REDIS;
步驟204,所述第二對象REDIS接收所述讀取緩存實體對象的請求,并根據(jù)所述讀取緩存實體對象的請求,向所述Jedis Wrapper發(fā)送所述讀取緩存實體對象的請求所針對的實體對象和參考對象;
步驟205,所述Jedis Wrapper接收所述實體對象和參考對象,并將所述實體對象和參考對象發(fā)送給所述緩存中心;
步驟206,所述緩存中心接收所述實體對象和參考對象,并比較所述實體對象和參考對象的版本號;
這里,緩存中心每請求讀取一個緩存的實體對象,都會將調(diào)取出的所述實體對象與參考對象的版本號進行比較,根據(jù)比較結(jié)果確定所述實體對象的緩存狀態(tài)是否處于有效狀態(tài)。具體地,當(dāng)所述實體對象的版本號高于所述參考對象的版本號時,表示所述實體對象的緩存狀態(tài)為有效狀態(tài);當(dāng)所述實體對象的版本號低于所述參考對象的版本號時,表示所述實體對象的緩存狀態(tài)為失效狀態(tài)。
步驟207,緩存中心確定所述實體對象的版本號低于所述參考對象的版本號時,向第一數(shù)據(jù)中心的第一版本號REDIS發(fā)送新版本號獲取請求;
步驟208,第一版本號REDIS接收所述新版本號獲取請求,并根據(jù)所述新版本號獲取請求向所述緩存中心分配新版本號;
這里,所述新版本號高于所述參考對象的版本號。
步驟209,緩存中心向本站點內(nèi)的第二數(shù)據(jù)庫發(fā)送對象加載請求,并將新版本號向第一數(shù)據(jù)中心的第一數(shù)據(jù)庫發(fā)送;
這里,所述對象加載請求中攜帶所述新版本號。
步驟210,第一數(shù)據(jù)庫向緩存中心發(fā)送重新加載的新實體對象;
步驟211,緩存中心根據(jù)所述新實體對象更新緩存,并觸發(fā)所述JedisWrapper進行雙寫數(shù)據(jù)的操作;
這里,所述雙寫數(shù)據(jù)的操作是指,將所述新實體對象同步更新到所述第一數(shù)據(jù)中心的第一對象REDIS和第二數(shù)據(jù)中心的第二對象REDIS。
步驟212,Jedis Wrapper根據(jù)緩存中心的觸發(fā)操作,將第二對象REDIS緩存的實體對象更新為所述新實體對象;
步驟213,第二對象REDIS向所述Jedis Wrapper發(fā)送更新結(jié)果;
步驟214,Jedis Wrapper接收第二對象REDIS發(fā)送的所述更新結(jié)果;
步驟215,Jedis Wrapper根據(jù)所述更新結(jié)果,向所述緩存中心發(fā)送新加載的實體對象;
步驟216,緩存中心接收所述新加載的實體對象,并向所述內(nèi)容服務(wù)器發(fā)送新實體對象;
步驟217,Jedis Wrapper根據(jù)緩存中心的觸發(fā)操作,將第一數(shù)據(jù)中心中的第一對象REDIS緩存的實體對象更新為所述新實體對象;
步驟218,第一對象REDIS向Jedis Wrapper發(fā)送更新結(jié)果。
在本發(fā)明實施例中,第一數(shù)據(jù)中心執(zhí)行緩存讀取的方法與第二數(shù)據(jù)中心執(zhí)行緩存讀取的方法大致相同,其不同之處在于,所述第一數(shù)據(jù)中心對獲取到的實體對象和參考對象進行比較之后,確定實體對象的版本號低于參考對象的版本號時,也是向第一數(shù)據(jù)中心的第一版本號REDIS發(fā)送新版本號獲取請求,并接收所述第一版本號REDIS根據(jù)所述新版本號獲取請求發(fā)送的新版本號,所述新版本號高于參考對象的版本號。
本發(fā)明實施例與現(xiàn)有技術(shù)相比,通過在執(zhí)行讀緩存操作時,只讀取本站點內(nèi)的REDIS服務(wù)器,而在執(zhí)行寫緩存操作時,則采用雙寫的方法,同步寫入雙數(shù)據(jù)中心的REDIS服務(wù)器,使得雙數(shù)據(jù)中心的REDIS服務(wù)器在相同的key里保持存儲的數(shù)據(jù)相同。如此,能夠提高數(shù)據(jù)傳輸速度同時能夠避免數(shù)據(jù)包丟失。
圖3為本發(fā)明實施例基于遠程字典服務(wù)器的數(shù)據(jù)存儲系統(tǒng)的結(jié)構(gòu)示意圖,如圖3所示,所述系統(tǒng)包括:位于第一數(shù)據(jù)中心300的第一內(nèi)容服務(wù)器301、第一對象REDIS 302、第一版本號REDIS 303、第一數(shù)據(jù)庫304,以及位于第二數(shù)據(jù)中心400的第二內(nèi)容服務(wù)器401和第二對象REDIS 402;其中,
所述第一對象REDIS 302或所述第二對象REDIS 402,用于緩存實體對象和參考對象;
所述第一版本號REDIS 303,用于分配新版本號;
所述第一內(nèi)容服務(wù)器301或所述第二內(nèi)容服務(wù)器401,用于獲取所述第一對象REDIS 302或所述第二對象REDIS 402緩存的實體對象和參考對象;確定所述實體對象的版本號低于所述參考對象的版本號時,獲取所述第一版本號REDIS 303分配的新版本號,并根據(jù)所述新版本號獲取所述第一數(shù)據(jù)庫304重新加載的新實體對象;同步更新所述第一對象REDIS 302和所述第二對象REDIS 402緩存的實體對象為所述新實體對象。
本發(fā)明實施例中,所述第一對象REDIS 302和所述第二對象REDIS 402可以是單臺REDIS服務(wù)器,也可以是由多臺REDIS服務(wù)器組成的REDIS服務(wù)器集群。
具體地,所述第一內(nèi)容服務(wù)器301通過Jedis Wrapper向本站點內(nèi)第一對象REDIS 302發(fā)送對象獲取請求,所述第一對象REDIS 302接收到所述對象獲取請求后,根據(jù)所述對象獲取請求向所述第一內(nèi)容服務(wù)器301發(fā)送實體對象和參考對象?;蛘?,所述第二內(nèi)容服務(wù)器401通過Jedis Wrapper向本站點內(nèi)第二對象REDIS 402發(fā)送對象獲取請求,所述第二對象REDIS 402接收到所述對象獲取請求后,根據(jù)所述對象獲取請求向所述第二內(nèi)容服務(wù)器401發(fā)送實體對象和參考對象。這里,所述實體對像和參考對象都是實體類的一個實例。
所述第一內(nèi)容服務(wù)器301或所述第二內(nèi)容服務(wù)器401獲取到本站點內(nèi)第一對象REDIS 302或第二對象REDIS 402緩存的實體對象和參考對象后,確定所述實體對象和所述參考對象的版本號,并將所述實體對象的版本號與所述參考對象的版本號進行比對,得到比對結(jié)果,根據(jù)所述比對結(jié)果確定所述實體對象的版本號低于所述參考對象的版本號時,向所述第一版本號REDIS 303發(fā)送新版本號獲取請求,所述第一版本號REDIS 303根據(jù)所述新版本號獲取請求,向所述第一內(nèi)容服務(wù)器301或所述第二內(nèi)容服務(wù)器401發(fā)送新版本號。這里,所述新版本號高于所述參考對象的版本號。
在本發(fā)明實施例中,所述第二數(shù)據(jù)中心400還包括第二版本號REDIS 403和第二數(shù)據(jù)庫404,所述第一內(nèi)容服務(wù)器301或所述第二內(nèi)容服務(wù)器401獲取到所述新版本號后,將所述新版本號同步更新到所述第二版本號REDIS 403,并向所述第一數(shù)據(jù)庫304發(fā)送對象加載請求,其中,所述對象加載請求中攜帶有所述新版本號。所述第一數(shù)據(jù)庫304接收到所述對象加載請求后,根據(jù)所述對象加載請求重新加載實體對象,并將重新加載的新實體對象發(fā)送給所述第一內(nèi)容服務(wù)器301或所述第二內(nèi)容服務(wù)器401,所述第一內(nèi)容服務(wù)器301或所述第二內(nèi)容服務(wù)器401接收到所述新實體對象后,將所述新實體對象同步更新到所述第二數(shù)據(jù)庫404。這里,采用在異地部署一個一模一樣的第二版本號REDIS403和第二數(shù)據(jù)庫404實現(xiàn)冷備容災(zāi)方案,可以在所述第一版本號REDIS 303和第一數(shù)據(jù)庫304所處的地理位置發(fā)生自然災(zāi)害,導(dǎo)致當(dāng)前數(shù)據(jù)庫發(fā)生災(zāi)難時,所述第二版本號REDIS 403和所述第二數(shù)據(jù)庫404可以立馬頂替工作,保證業(yè)務(wù)不間斷運行。
在本發(fā)明實施例中,為了保證第一對象REDIS 302和所述第二對象REDIS402在相同的鍵值里存入的內(nèi)容相同,所述第一內(nèi)容服務(wù)器301或所述第二內(nèi)容服務(wù)器401接收到所述第一數(shù)據(jù)庫304重新加載的新實體對象后,通過所述Jedis Wrapper同步更新所述第一對象REDIS 302和所述第二對象REDIS 402緩存的實體對象為所述新實體對象。具體地REDIS執(zhí)行緩存讀取的流程參照方法實施例中的圖2描述。
在本發(fā)明實施例中,通過在執(zhí)行讀緩存操作時,只讀取本站點內(nèi)的REDIS服務(wù)器,而在執(zhí)行寫緩存操作時,則采用雙寫的方法,同步更新雙數(shù)據(jù)中心的REDIS服務(wù)器,使得雙數(shù)據(jù)中心的REDIS服務(wù)器在相同的key里保持存儲的數(shù)據(jù)相同。如此,能夠提高數(shù)據(jù)傳輸速度同時能夠避免數(shù)據(jù)包丟失。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本發(fā)明可采用硬件實施例、軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器和光學(xué)存儲器等)上實施的計算機程序產(chǎn)品的形式。
本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設(shè)備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機程序指令也可存儲在能引導(dǎo)計算機或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
以上所述,僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。