欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

緩存的實現(xiàn)的方法和裝置與流程

文檔序號:12818771閱讀:469來源:國知局
緩存的實現(xiàn)的方法和裝置與流程

本申請涉及網(wǎng)絡(luò)通信技術(shù)領(lǐng)域,尤其涉及一種緩存的實現(xiàn)方法和裝置。



背景技術(shù):

緩存是基于互聯(lián)網(wǎng)的各種應(yīng)用普遍使用的一種數(shù)據(jù)訪問技術(shù)。基于互聯(lián)網(wǎng)的應(yīng)用通常需要通過網(wǎng)絡(luò)獲取各種業(yè)務(wù)數(shù)據(jù),并利用這些業(yè)務(wù)數(shù)據(jù)來向用戶提供相應(yīng)的服務(wù)。對一些被應(yīng)用頻繁使用的業(yè)務(wù)數(shù)據(jù),可以將這些數(shù)據(jù)暫時保存在本地,供應(yīng)用多次讀取,從而提高應(yīng)用的響應(yīng)速度并降低數(shù)據(jù)提供方的訪問壓力。

java為開發(fā)人員提供了多種不同的緩存技術(shù),每種緩存技術(shù)都具有各自的特點和適用場景。在一些較為復(fù)雜的應(yīng)用中,經(jīng)常采用幾個對應(yīng)于不同緩存技術(shù)的緩存組件,來滿足應(yīng)用對業(yè)務(wù)數(shù)據(jù)的不同處理需求。同樣的業(yè)務(wù)數(shù)據(jù)可能存放在不同的緩存組件中,由于每個緩存組件會按照自身的更新機制來更新所緩存的業(yè)務(wù)數(shù)據(jù),可能發(fā)生不同緩存組件中相同的業(yè)務(wù)數(shù)據(jù)不一致的情況,造成應(yīng)用的業(yè)務(wù)處理錯誤;此外,每個緩存組件在更新相同的業(yè)務(wù)數(shù)據(jù)時會分別向數(shù)據(jù)提供方發(fā)起數(shù)據(jù)獲取請求,容易導(dǎo)致對相同數(shù)據(jù)的多個并發(fā)訪問請求,造成并發(fā)障礙。



技術(shù)實現(xiàn)要素:

有鑒于此,本申請?zhí)峁┮环N緩存的實現(xiàn)方法,所述緩存包括至少兩個緩存組件,所述方法包括:

在滿足第一預(yù)定條件時,從數(shù)據(jù)提供方獲取應(yīng)用曾經(jīng)請求的業(yè)務(wù)數(shù)據(jù);

按照應(yīng)用請求所述業(yè)務(wù)數(shù)據(jù)采用的緩存組件,將所獲取的業(yè)務(wù)數(shù)據(jù)寫入至少一個緩存組件中。

本申請還提供了一種緩存的實現(xiàn)裝置,所述緩存包括至少兩個緩存組件,所述裝置包括:

業(yè)務(wù)數(shù)據(jù)獲取單元,用于在滿足第一預(yù)定條件時,從數(shù)據(jù)提供方獲取應(yīng)用曾經(jīng)請求的業(yè)務(wù)數(shù)據(jù);

緩存組件寫入單元,用于按照應(yīng)用請求所述業(yè)務(wù)數(shù)據(jù)采用的緩存組件,將所獲取的業(yè)務(wù)數(shù)據(jù)寫入至少一個緩存組件中。

由以上技術(shù)方案可見,本申請的實施例中,對兩個及以上的緩存組件進行統(tǒng)一管理,在滿足第一預(yù)定條件時向數(shù)據(jù)提供方獲取業(yè)務(wù)數(shù)據(jù),并寫入到應(yīng)用訪問該業(yè)務(wù)數(shù)據(jù)所采用的一個到多個緩存組件中,使得不同緩存組件中同樣的業(yè)務(wù)數(shù)據(jù)能夠保持一致性,避免了因數(shù)據(jù)不一致導(dǎo)致的業(yè)務(wù)處理錯誤;各個緩存組件中相同的業(yè)務(wù)數(shù)據(jù)只需一次讀取過程,極大的減少了并發(fā)障礙發(fā)生的可能性。

附圖說明

圖1是本申請實施例中緩存管理器與應(yīng)用、緩存組件之間的邏輯關(guān)系示意圖;

圖2是本申請實施例中一種緩存的實現(xiàn)方法的流程圖;

圖3是本申請應(yīng)用示例中緩存管理器的一種邏輯結(jié)構(gòu)圖;

圖4是本申請應(yīng)用示例中緩存管理器的組成部分在緩存更新過程中的交互流程圖;

圖5是本申請實施例所應(yīng)用的設(shè)備的一種硬件結(jié)構(gòu)圖;

圖6是本申請實施例中一種緩存的實現(xiàn)裝置的邏輯結(jié)構(gòu)圖。

具體實施方式

本申請的實施例提出一種新的緩存的實現(xiàn)方法,在應(yīng)用與緩存組件之間 增加用來對兩個或兩個以上緩存組件進行統(tǒng)一管理的緩存管理器,應(yīng)用向緩存管理器請求業(yè)務(wù)數(shù)據(jù),緩存管理器負責向數(shù)據(jù)提供方獲取業(yè)務(wù)數(shù)據(jù),寫入到應(yīng)用指定的至少一個緩存組件中;緩存管理器還可以對各個緩存組件中已緩存業(yè)務(wù)數(shù)據(jù)的更新進行統(tǒng)一調(diào)度;從而維護各個緩存組件中業(yè)務(wù)數(shù)據(jù)的一致性,并且避免各個緩存組件分別向數(shù)據(jù)提供方請求同樣的業(yè)務(wù)數(shù)據(jù),降低了并發(fā)障礙發(fā)生的可能性,以解決現(xiàn)有技術(shù)中存在的問題。

需要說明的是,本申請實施例中所說的緩存管理器是在應(yīng)用和緩存組件之間的一個邏輯部件或者一種邏輯上的層次結(jié)構(gòu),如圖1所示,為描述方便,將其稱為緩存管理器。對應(yīng)用而言,緩存管理器是多個緩存組件的統(tǒng)一接口,應(yīng)用通過緩存管理器來訪問、和/或調(diào)用各個緩存組件。在具體實現(xiàn)時,緩存管理器可以獨立于應(yīng)用來實現(xiàn),作為一個相對獨立的組成部分包含在應(yīng)用中。

本申請實施例中,應(yīng)用可以是任何需要從網(wǎng)絡(luò)上獲取數(shù)據(jù)的數(shù)據(jù)需求方,例如,可以是瀏覽器、應(yīng)用程序等客戶端(其數(shù)據(jù)提供方通常是作為服務(wù)端的應(yīng)用服務(wù)器),也可以是各種應(yīng)用服務(wù)器等服務(wù)端(其數(shù)據(jù)提供方通常是各種數(shù)據(jù)庫服務(wù)器,以及其他的應(yīng)用服務(wù)器)。緩存組件可以是各種已有的實現(xiàn)數(shù)據(jù)緩存功能的功能單元,也可以是由開發(fā)人員自行實現(xiàn)的緩存功能單元。例如在java環(huán)境中,現(xiàn)有技術(shù)中的各種java緩存框架都可以作為緩存組件,如oscache(一種廣泛采用的高性能的java平臺緩存框架)、concurrentmap(java中一種線程安全的緩存數(shù)據(jù)集)、ehcache(一種java開源緩存框架)、jsc(javacachingsystem,java緩存系統(tǒng))、swarmcache(一種分布式緩存框架)等等。

本申請實施例中,緩存管理器所在的設(shè)備與數(shù)據(jù)提供方通過網(wǎng)絡(luò)相互可訪問。其中,緩存管理器所在的設(shè)備可以是手機、平板電腦、pc(personalcomputer,個人電腦)、筆記本、虛擬機、物理或邏輯的服務(wù)器等。本申請實施例對緩存管理器所在設(shè)備的種類,以及該設(shè)備與數(shù)據(jù)提供方之間通信網(wǎng)絡(luò)的類型、協(xié)議等均不做限定。

本申請實施例中,采用至少兩個緩存組件用來緩存應(yīng)用所需的業(yè)務(wù)數(shù)據(jù), 相同的業(yè)務(wù)數(shù)據(jù)可以緩存在數(shù)個不同的緩存組件中。緩存的實現(xiàn)方法的流程如圖2所示。

步驟210,在滿足第一預(yù)定條件時,從數(shù)據(jù)提供方獲取應(yīng)用曾經(jīng)請求的業(yè)務(wù)數(shù)據(jù)。

現(xiàn)有技術(shù)中,應(yīng)用在獲取可能會頻繁使用的業(yè)務(wù)數(shù)據(jù)時,先查詢所采用的某個緩存組件中是否保存有所需的業(yè)務(wù)數(shù)據(jù),如果命中則直接使用該緩存組件中的業(yè)務(wù)數(shù)據(jù),否則由應(yīng)用向該業(yè)務(wù)數(shù)據(jù)的數(shù)據(jù)提供方請求該業(yè)務(wù)數(shù)據(jù)。

本申請的實施例中,應(yīng)用向緩存管理器請求需進行緩存的業(yè)務(wù)數(shù)據(jù)。哪些業(yè)務(wù)數(shù)據(jù)需要進行緩存可以根據(jù)實際場景確定,并參照現(xiàn)有技術(shù)實現(xiàn),不再贅述。根據(jù)要使用業(yè)務(wù)數(shù)據(jù)的具體方式,應(yīng)用可能需要采用一個到多個不同的緩存組件來對所需的業(yè)務(wù)數(shù)據(jù)進行緩存。應(yīng)用可以在向緩存管理器請求業(yè)務(wù)數(shù)據(jù)的時候指定所采用的一個或者一個以上緩存組件;具體實現(xiàn)中,可以在緩存管理器和應(yīng)用之間自定義通用于所有緩存組件的業(yè)務(wù)數(shù)據(jù)請求接口(將應(yīng)用采用的緩存組件作為其中的參數(shù)),由緩存管理器將應(yīng)用的業(yè)務(wù)數(shù)據(jù)請求轉(zhuǎn)換為各個緩存組件的數(shù)據(jù)查詢接口;也可以由應(yīng)用直接使用各個緩存組件的數(shù)據(jù)查詢接口,緩存管理器來根據(jù)應(yīng)用使用的數(shù)據(jù)查詢接口來識別出應(yīng)用所采用的緩存組件;本申請的實施例不做限定。

當緩存管理器收到應(yīng)用采用某個緩存組件訪問業(yè)務(wù)數(shù)據(jù)的請求后,在應(yīng)用指定的緩存組件中查找是否存在被請求的業(yè)務(wù)數(shù)據(jù),如果查找該緩存組件命中,則緩存管理器從該緩存組件中獲得被請求的業(yè)務(wù)數(shù)據(jù),并將其返回給應(yīng)用;如果該緩存組件中不存在被請求的業(yè)務(wù)數(shù)據(jù),則緩存管理器向數(shù)據(jù)提供方發(fā)起請求,來獲取被應(yīng)用請求的業(yè)務(wù)數(shù)據(jù)。在從數(shù)據(jù)提供方得到所請求的業(yè)務(wù)數(shù)據(jù)后,緩存管理器按照應(yīng)用所采用的緩存組件,將所獲取的業(yè)務(wù)數(shù)據(jù)返回給應(yīng)用。

在一些具體場景中,緩存組件以一定周期,對已緩存的業(yè)務(wù)數(shù)據(jù)進行更新,以避免因緩存的業(yè)務(wù)數(shù)據(jù)與數(shù)據(jù)提供方的業(yè)務(wù)數(shù)據(jù)不一致導(dǎo)致的問題。本申請實施例中可以由緩存管理器來統(tǒng)一對所有緩存組件中的業(yè)務(wù)數(shù)據(jù)進行 更新,為所有緩存組件中的業(yè)務(wù)數(shù)據(jù)設(shè)置緩存更新周期,在緩存更新周期到時,緩存管理器從數(shù)據(jù)提供方獲取需要更新的業(yè)務(wù)數(shù)據(jù)。統(tǒng)一更新緩存數(shù)據(jù)的方式可以根據(jù)具體場景的需求來確定,本申請的實施例不做限定。

在一種實現(xiàn)方式中,可以由緩存管理器在本地設(shè)置一個統(tǒng)一緩存區(qū),用來保存所有緩存組件中已緩存的業(yè)務(wù)數(shù)據(jù)以及每個業(yè)務(wù)數(shù)據(jù)所在的至少一個緩存組件,這些業(yè)務(wù)數(shù)據(jù)具有相同或不同的更新周期。緩存管理器按照業(yè)務(wù)數(shù)據(jù)的更新周期來更新統(tǒng)一緩存區(qū)中的業(yè)務(wù)數(shù)據(jù),再按照統(tǒng)一緩存區(qū)中更新后的業(yè)務(wù)數(shù)據(jù)來刷新所有的緩存組件。這種方式中,緩存管理器要維護統(tǒng)一緩存區(qū)中業(yè)務(wù)數(shù)據(jù)的有效狀態(tài)(緩存中的數(shù)據(jù)通常在一段時間未被訪問后失效),如果某個緩存組件中該業(yè)務(wù)數(shù)據(jù)為有效狀態(tài),則統(tǒng)一緩存區(qū)中該業(yè)務(wù)數(shù)據(jù)即為有效。

在另一種實現(xiàn)方式中,可以為所有的業(yè)務(wù)數(shù)據(jù)設(shè)置相同的更新周期,當緩存更新周期到時,緩存管理器合并所有緩存組件中需要進行更新的業(yè)務(wù)數(shù)據(jù)(即讀取所有緩存組件中已緩存的業(yè)務(wù)數(shù)據(jù),并將相同的業(yè)務(wù)數(shù)據(jù)進行去重),記錄每個業(yè)務(wù)數(shù)據(jù)所在的一個到多個緩存組件(對被兩個及以上緩存組件緩存的業(yè)務(wù)數(shù)據(jù),所在的緩存組件超過一個);然后緩存管理器向數(shù)據(jù)提供方發(fā)起請求,獲取每個業(yè)務(wù)數(shù)據(jù)的更新值。這種方式中,業(yè)務(wù)數(shù)據(jù)的有效狀態(tài)將由各個緩存組件自行維護,而無需由緩存管理器來維護,實現(xiàn)起來更為簡單方便。

這樣,業(yè)務(wù)數(shù)據(jù)的獲取,包括各個緩存組件中已緩存業(yè)務(wù)數(shù)據(jù)的更新,都由緩存管理器來進行,不會因多個緩存組件向數(shù)據(jù)提供方請求相同的業(yè)務(wù)數(shù)據(jù)而導(dǎo)致并發(fā)障礙,提高了應(yīng)用和數(shù)據(jù)提供方的性能。

步驟220,按照應(yīng)用請求業(yè)務(wù)數(shù)據(jù)所采用的緩存組件,將所獲取的業(yè)務(wù)數(shù)據(jù)寫入至少一個緩存組件中。

對應(yīng)用請求業(yè)務(wù)數(shù)據(jù)時采用的緩存組件未命中的情況,緩存管理器從數(shù)據(jù)提供方得到業(yè)務(wù)數(shù)據(jù)后,將得到的業(yè)務(wù)數(shù)據(jù)寫入到應(yīng)用請求該業(yè)務(wù)數(shù)據(jù)時采用的緩存組件中。

對更新各個緩存組件中已緩存業(yè)務(wù)數(shù)據(jù)的情況,緩存管理器從數(shù)據(jù)提供方得到業(yè)務(wù)數(shù)據(jù)后,根據(jù)所獲取的業(yè)務(wù)數(shù)據(jù),對應(yīng)用訪問該業(yè)務(wù)數(shù)據(jù)采用的至少一個緩存組件中的該業(yè)務(wù)數(shù)據(jù)進行更新。針對上述兩種更新的是實現(xiàn)方式而言,緩存管理器可以按照保存的或記錄的某個業(yè)務(wù)數(shù)據(jù)所在的緩存組件(即應(yīng)用曾經(jīng)用來請求該業(yè)務(wù)數(shù)據(jù)的緩存組件),利用獲取的業(yè)務(wù)數(shù)據(jù)對每個所在緩存組件中的該業(yè)務(wù)數(shù)據(jù)進行更新。

換言之,本步驟中的寫入操作不僅包括在緩存組件中增加業(yè)務(wù)數(shù)據(jù),也包括更新緩存組件中已有的業(yè)務(wù)數(shù)據(jù)。

在一些場景中,出于性能考慮,會采用多個線程來并發(fā)將獲取的業(yè)務(wù)數(shù)據(jù)寫入各個緩存組件中。當這些線程同時訪問同一個緩存組件或同一個緩存組件中的同一個業(yè)務(wù)數(shù)據(jù)時,容易造成本地的并發(fā)障礙。緩存管理器可以在在將所獲取的業(yè)務(wù)數(shù)據(jù)寫入應(yīng)用訪問該業(yè)務(wù)數(shù)據(jù)采用的至少一個緩存組件中之前,開啟對該緩存組件或該緩存組件中的該業(yè)務(wù)數(shù)據(jù)的同步鎖;在將所獲取的業(yè)務(wù)數(shù)據(jù)寫入應(yīng)用訪問該業(yè)務(wù)數(shù)據(jù)采用的至少一個緩存組件中之后,釋放對該緩存組件或該緩存組件中的該業(yè)務(wù)數(shù)據(jù)的同步鎖。這樣,當某個負責寫入操作的線程發(fā)現(xiàn)其要寫入的目的緩存組件中的目的記錄已經(jīng)加了同步鎖,表示本次的寫入操作已經(jīng)有其他線程在執(zhí)行,則不再執(zhí)行本次的寫入操作,從而極大的降低本地并發(fā)障礙發(fā)生的可能性。

在一些場景中,有些業(yè)務(wù)數(shù)據(jù)的更新會觸發(fā)相關(guān)的業(yè)務(wù)過程。因此,本申請實施例中,在符合第二預(yù)定條件的業(yè)務(wù)數(shù)據(jù)更新完成后,緩存管理器可以通知應(yīng)用進行與該業(yè)務(wù)數(shù)據(jù)相關(guān)的業(yè)務(wù)操作。第二預(yù)定條件用來篩選哪些業(yè)務(wù)數(shù)據(jù)的更新需要觸發(fā)業(yè)務(wù)過程,可以根據(jù)實際場景的具體需求確定,例如,可以將更新后需要應(yīng)用有所響應(yīng)的業(yè)務(wù)數(shù)據(jù)的某個預(yù)定標志位置位,則第二預(yù)定條件為該預(yù)定標志位置位的業(yè)務(wù)數(shù)據(jù)。緩存管理器可以通過調(diào)用各個緩存組件的監(jiān)聽功能來實現(xiàn)觸發(fā)應(yīng)用的相關(guān)業(yè)務(wù)操作,不再贅述。

可見,本申請的實施例中,應(yīng)用不再直接訪問和控制多個緩存組件,也不再自行向數(shù)據(jù)提供方請求需緩存的業(yè)務(wù)數(shù)據(jù),而是向緩存管理器來請求業(yè) 務(wù)數(shù)據(jù),由緩存管理器來向數(shù)據(jù)提供方獲取業(yè)務(wù)數(shù)據(jù)并統(tǒng)一管理所有的緩存組件,這樣各個緩存組件中相同的業(yè)務(wù)數(shù)據(jù)只需一次讀取過程,極大的減少了并發(fā)障礙發(fā)生的可能性,同時各個緩存組件中的業(yè)務(wù)數(shù)據(jù)都來自于緩存管理器,不同緩存組件中相同的業(yè)務(wù)數(shù)據(jù)能夠保持一致,避免了因數(shù)據(jù)不一致導(dǎo)致的業(yè)務(wù)處理錯誤。

在本申請的一個應(yīng)用示例中,應(yīng)用采用了三種java緩存組件,concurrentmap緩存組件、oscache緩存組件和ehcache緩存組件;該應(yīng)用的數(shù)據(jù)提供方為數(shù)據(jù)庫服務(wù)器。

緩存管理器的結(jié)構(gòu)如圖3所示,包括訪問與調(diào)度器、讀取器、更新器和監(jiān)聽器四個組成部分。其中,訪問與調(diào)度器用來接收應(yīng)用的業(yè)務(wù)數(shù)據(jù)請求,查詢緩存組件以及對讀取器、更新器和監(jiān)聽器進行調(diào)度;讀取器用來從數(shù)據(jù)庫服務(wù)器獲取業(yè)務(wù)數(shù)據(jù);更新器用來根據(jù)讀取器得到的業(yè)務(wù)數(shù)據(jù)更新對應(yīng)的緩存組件;監(jiān)聽器用來在當某些業(yè)務(wù)數(shù)據(jù)的更新應(yīng)觸發(fā)后續(xù)業(yè)務(wù)過程時,將這些業(yè)務(wù)數(shù)據(jù)的更新通知給應(yīng)用。

應(yīng)用采用某個緩存組件的數(shù)據(jù)查詢格式,向緩存管理器請求需要緩存的業(yè)務(wù)數(shù)據(jù)。訪問與調(diào)度器收到應(yīng)用的請求后,通過數(shù)據(jù)查詢格式識別出應(yīng)用采用的是哪一個緩存組件,并在該緩存組件中查找是否有被請求的業(yè)務(wù)數(shù)據(jù)。如果查詢該緩存組件命中,則訪問與調(diào)度器按照該緩存組件的數(shù)據(jù)響應(yīng)格式,將應(yīng)用請求的業(yè)務(wù)數(shù)據(jù)返回給應(yīng)用;如果查詢該緩存組件未命中,則訪問與調(diào)度器將要獲取的業(yè)務(wù)數(shù)據(jù)以及對應(yīng)的緩存組件發(fā)送給讀取器。

讀取器從數(shù)據(jù)庫服務(wù)器獲取該業(yè)務(wù)數(shù)據(jù),并返回給訪問與調(diào)度器。訪問與調(diào)度器按照應(yīng)用采用的緩存組件的數(shù)據(jù)響應(yīng)格式,將業(yè)務(wù)數(shù)據(jù)返回給應(yīng)用,并將該業(yè)務(wù)數(shù)據(jù)寫入到該緩存組件中。

在訪問與調(diào)度器中,為三個緩存組件中緩存的業(yè)務(wù)數(shù)據(jù)設(shè)置了相同的緩存更新周期。當緩存更新周期到時,緩存管理器的四個組成部分之間的交互流程如圖4所示。

當緩存更新周期到時,訪問與調(diào)度器指令讀取器啟動緩存數(shù)據(jù)讀取。讀 取器分別采用三個緩存組件提供的數(shù)據(jù)查詢接口,從三個緩存組件中讀取所有緩存的業(yè)務(wù)數(shù)據(jù),將其合并為所有需要更新的業(yè)務(wù)數(shù)據(jù)清單,并在清單中記錄每個業(yè)務(wù)數(shù)據(jù)是從哪個或哪幾個緩存組件中讀取出來的(即該業(yè)務(wù)數(shù)據(jù)所在的緩存組件)。讀取器向數(shù)據(jù)庫服務(wù)器請求清單中每個業(yè)務(wù)數(shù)據(jù)的當前值,在獲得全部清單中業(yè)務(wù)數(shù)據(jù)的當前值后,向訪問與調(diào)度器返回緩存數(shù)據(jù)讀取完成的消息。

訪問與調(diào)度器開啟某個緩存組件的同步鎖,指令更新器對該緩存組件中的業(yè)務(wù)數(shù)據(jù)進行更新;更新器采用該緩存組件提供的數(shù)據(jù)更新接口,將讀取器獲得業(yè)務(wù)數(shù)據(jù)的當前值更新到該緩存組件中,更新器可以從讀取器生成的業(yè)務(wù)數(shù)據(jù)清單中獲知某個業(yè)務(wù)數(shù)據(jù)應(yīng)當更新到哪個或哪幾個緩存組件中。在更新器更新完該緩存組件中的所有業(yè)務(wù)數(shù)據(jù)后,向訪問與調(diào)度器返回更新完成的消息。訪問與調(diào)度器釋放該緩存組件的同步鎖。訪問與調(diào)度器、更新器重復(fù)本過程直到三個緩存組件全部更新完成。

訪問與調(diào)度器將緩存更新完畢的消息發(fā)送給監(jiān)聽器。監(jiān)聽器調(diào)用各個緩存組件提供的緩存監(jiān)聽接口,以發(fā)現(xiàn)各個符合預(yù)定條件的業(yè)務(wù)數(shù)據(jù)是否有變化,如果有變化則將該業(yè)務(wù)數(shù)據(jù)發(fā)生變化的消息通知給應(yīng)用,以便應(yīng)用啟動與該業(yè)務(wù)數(shù)據(jù)相關(guān)的業(yè)務(wù)過程。監(jiān)聽器向訪問與調(diào)度器返回監(jiān)聽執(zhí)行完畢的消息。至此,本周期的緩存更新完成。

與上述流程實現(xiàn)對應(yīng),本申請的實施例還提供了一種緩存的實現(xiàn)裝置。該裝置可以通過軟件實現(xiàn),也可以通過硬件或者軟硬件結(jié)合的方式實現(xiàn)。以軟件實現(xiàn)為例,作為邏輯意義上的裝置,是通過該裝置所在設(shè)備的cpu(centralprocessunit,中央處理器)將對應(yīng)的計算機程序指令讀取到內(nèi)存中運行形成的。從硬件層面而言,除了圖5所示的cpu、內(nèi)存以及非易失性存儲器之外,該裝置所在的設(shè)備通常還包括用于進行無線信號收發(fā)的芯片等其他硬件,或者還包括用于實現(xiàn)網(wǎng)絡(luò)通信功能的板卡等其他硬件。

圖6所示為本申請實施例提供的一種緩存的實現(xiàn)裝置,該緩存包括至少兩個緩存組件,所述裝置包括業(yè)務(wù)數(shù)據(jù)獲取單元和緩存組件寫入單元,其中: 業(yè)務(wù)數(shù)據(jù)獲取單元用于在滿足第一預(yù)定條件時,從數(shù)據(jù)提供方獲取應(yīng)用曾經(jīng)請求的業(yè)務(wù)數(shù)據(jù);緩存組件寫入單元用于按照應(yīng)用請求所述業(yè)務(wù)數(shù)據(jù)采用的緩存組件,將所獲取的業(yè)務(wù)數(shù)據(jù)寫入至少一個緩存組件中。

可選的,所述第一預(yù)定條件包括:收到應(yīng)用采用某個緩存組件訪問業(yè)務(wù)數(shù)據(jù)的請求,且所述緩存組件中不存在被請求的業(yè)務(wù)數(shù)據(jù)。

可選的,所述裝置還包括業(yè)務(wù)數(shù)據(jù)返回單元,用于按照應(yīng)用所采用的緩存組件,將所獲取的業(yè)務(wù)數(shù)據(jù)返回給應(yīng)用。

一個例子中,所述第一預(yù)定條件包括:緩存更新周期到;所述緩存組件寫入單元具體用于根據(jù)所獲取的業(yè)務(wù)數(shù)據(jù),對應(yīng)用訪問所述業(yè)務(wù)數(shù)據(jù)采用的至少一個緩存組件中的所述業(yè)務(wù)數(shù)據(jù)進行更新。

上述例子中,所述裝置還可以包括更新數(shù)據(jù)合并單元,用于當緩存更新周期到時,合并所有緩存組件中需要進行更新的業(yè)務(wù)數(shù)據(jù),并記錄每個業(yè)務(wù)數(shù)據(jù)所在的至少一個緩存組件;所述業(yè)務(wù)數(shù)據(jù)獲取單元具體用于當緩存更新周期到時,從數(shù)據(jù)提供方獲取合并后的每個業(yè)務(wù)數(shù)據(jù);所述緩存組件寫入單元具體用于按照記錄的每個業(yè)務(wù)數(shù)據(jù)所在的緩存組件,利用獲取的所述業(yè)務(wù)數(shù)據(jù)對所述緩存組件中的所述業(yè)務(wù)數(shù)據(jù)進行更新。

上述例子中,所述裝置還可以包括緩存變化監(jiān)聽單元,用于當符合第二預(yù)定條件的業(yè)務(wù)數(shù)據(jù)更新完成后,通知應(yīng)用進行與所述業(yè)務(wù)數(shù)據(jù)相關(guān)的業(yè)務(wù)操作。

可選的,其特征在于,所述裝置還包括同步鎖開啟單元和同步鎖釋放單元,其中:同步鎖開啟單元用于在將所獲取的業(yè)務(wù)數(shù)據(jù)寫入應(yīng)用訪問所述業(yè)務(wù)數(shù)據(jù)采用的至少一個緩存組件中之前,開啟對所述緩存組件或所述緩存組件中的所述業(yè)務(wù)數(shù)據(jù)的同步鎖;同步鎖釋放單元用于在將所獲取的業(yè)務(wù)數(shù)據(jù)寫入應(yīng)用訪問所述業(yè)務(wù)數(shù)據(jù)采用的至少一個緩存組件中之后,釋放對所述緩存組件或所述緩存組件中的所述業(yè)務(wù)數(shù)據(jù)的同步鎖。

可選的,所述裝置還包括緩存組件查詢單元,用于收到應(yīng)用采用某個緩存組件訪問業(yè)務(wù)數(shù)據(jù)的請求后,將所述緩存組件中的被請求的業(yè)務(wù)數(shù)據(jù)返回 給應(yīng)用。

可選的,所述緩存組件包括:concurrentmap緩存組件、oscache緩存組件和/或ehcache緩存組件。

以上所述僅為本申請的較佳實施例而已,并不用以限制本申請,凡在本申請的精神和原則之內(nèi),所做的任何修改、等同替換、改進等,均應(yīng)包含在本申請保護的范圍之內(nèi)。

在一個典型的配置中,計算設(shè)備包括一個或多個處理器(cpu)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。

內(nèi)存可能包括計算機可讀介質(zhì)中的非永久性存儲器,隨機存取存儲器(ram)和/或非易失性內(nèi)存等形式,如只讀存儲器(rom)或閃存(flashram)。內(nèi)存是計算機可讀介質(zhì)的示例。

計算機可讀介質(zhì)包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術(shù)來實現(xiàn)信息存儲。信息可以是計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計算機的存儲介質(zhì)的例子包括,但不限于相變內(nèi)存(pram)、靜態(tài)隨機存取存儲器(sram)、動態(tài)隨機存取存儲器(dram)、其他類型的隨機存取存儲器(ram)、只讀存儲器(rom)、電可擦除可編程只讀存儲器(eeprom)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲器(cd-rom)、數(shù)字多功能光盤(dvd)或其他光學(xué)存儲、磁盒式磁帶,磁帶磁磁盤存儲或其他磁性存儲設(shè)備或任何其他非傳輸介質(zhì),可用于存儲可以被計算設(shè)備訪問的信息。按照本文中的界定,計算機可讀介質(zhì)不包括暫存電腦可讀媒體(transitorymedia),如調(diào)制的數(shù)據(jù)信號和載波。

還需要說明的是,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、商品或者設(shè)備中還存在另外的相同要素。

本領(lǐng)域技術(shù)人員應(yīng)明白,本申請的實施例可提供為方法、系統(tǒng)或計算機程序產(chǎn)品。因此,本申請可采用完全硬件實施例、完全軟件實施例或結(jié)合軟件和硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、cd-rom、光學(xué)存儲器等)上實施的計算機程序產(chǎn)品的形式。

當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
周至县| 大悟县| 左权县| 澄迈县| 万源市| 霍邱县| 汾阳市| 邹城市| 历史| 宁陕县| 调兵山市| 昌都县| 麦盖提县| 象州县| 高青县| 政和县| 深州市| 垣曲县| 观塘区| 呼和浩特市| 咸阳市| 壤塘县| 新绛县| 宣恩县| 枣阳市| 榕江县| 平乐县| 视频| 青浦区| 山阴县| 靖西县| 潞西市| 东兰县| 六枝特区| 赤峰市| 汕头市| 玛多县| 苍梧县| 柏乡县| 三河市| 宁远县|