一種緩存數據的方法及裝置與流程
2023-05-21 04:36:36 2

本發明涉及計算機存儲領域,更具體的說,是涉及一種緩存數據的方法及裝置。
背景技術:
計算機CPU運算速度快,但從其內存中讀取數據的速度不夠,導致系統與硬碟之間交換數據形成瓶頸,因此,計算機採用緩存技術,以提高計算機數據的傳輸速度。
目前,計算機的緩存系統主要通過伺服器內的後端緩存介質如RAMCloud、CacheProxy,對小量的變化不大的熱數據進行緩存,在接收到客戶端的訪問請求時,通過Socket通信從伺服器中的後端緩存介質如RAMCloud、CacheProxy中讀取數據,並返回給客戶端,從而減輕了後端資料庫的壓力;然而,每一次訪問後端緩存介質時,用戶都需要通過Socket通信才能從後端緩存中讀取緩存的數據,進而降低了數據讀取的響應時間,其次,由於Socket通信需要經過網絡傳輸實現通信,進而也增加了跨網絡訪問發生故障的概率。
技術實現要素:
有鑑於此,本發明提供了一種緩存數據的方法及裝置,進而既提高了讀取數據的響應時間,又避免了網絡間的緩存調用,降低了跨網絡訪問發生故障的概率。
為實現上述目的,本發明提供如下技術方案:
一種緩存數據的方法,應用於緩存裝置,預先獲得第一緩存數據,包括:
獲取客戶端發送的數據獲取指令;
判斷所述第一緩存數據中是否包含與所述數據獲取指令對應的數據;
在包含與所述數據獲取指令對應的數據時,將與所述數據獲取指令對應的所述第一緩存數據中的數據發送到所述客戶端。
優選地,所述預先獲得第一緩存數據包括:
獲取所述客戶端發送的應用重啟指令;
從伺服器的後端緩存介質的預設數據中獲取第一數據,其中,所述第一數據為當前訪問頻率大於預設頻率的數據,所述第一數據的數據容量值小於預設極大容量值;
將獲取到的所述第一數據進行緩存,獲得第一緩存數據。
優選地,在所述將獲取到的所述第一數據進行緩存,獲得第一緩存數據之後,還包括:
記錄所述第一緩存數據的緩存時間值;
在所述第一緩存數據的緩存時間值等於預設的過期時間值時,刪除失效數據,其中所述失效數據為對應緩存時間值等於所述預設的過期時間值的數據。
優選地,在所述刪除失效數據之後,還包括:
從所述後端緩存介質的預設數據中獲取第二數據,其中,所述第二數據為當前訪問頻率大於預設頻率的數據;
判斷所述緩存裝置內緩存數據的剩餘容量值是否大於所述第二數據所佔容量值;
在大於所述第二數據所佔容量值時,將獲取到的所述第二數據進行緩存,獲得第二緩存數據。
優選地,在所述第一緩存數據的緩存時間值小於預設的過期時間值時,將與所述數據獲取指令對應的所述第一緩存數據中的數據發送到所述客戶端之後,還包括:
記錄所述第一緩存數據的讀取次數;
判斷在預設讀取時間值內,所述第一緩存數據的讀取次數是否小於預設讀取次數;
在所述預設讀取時間值內,所述第一緩存數據的讀取次數小於預設讀取次數時,刪除對應小於所述預設讀取次數的所述緩存數據中的數據。
優選地,在所述判斷所述第一緩存數據中不包含與所述數據獲取指令對應的數據之後,還包括:
判斷所述後端緩存介質的預設數據中是否包含與所述數據獲取指令對應的數據;
在包含與所述數據獲取指令對應的數據時,從所述後端緩存介質的預設數據中獲取與所述數據獲取指令對應的數據;
判斷所述緩存裝置內緩存數據的剩餘容量值是否大於獲取到的與所述數據獲取指令對應的數據所佔容量值;
在大於獲取到的與所述數據獲取指令對應的數據所佔容量值時,將獲取得到的與所述數據獲取指令對應的數據進行緩存,獲得第三緩存數據;
將所述第三緩存數據發送到所述客戶端;
在小於或等於獲取到的與所述數據獲取指令對應的數據所佔容量值時,刪除容量值等於預設容量值的緩存數據;
將獲取得到的與所述數據獲取指令對應的數據進行緩存,獲得第四緩存數據;
將所述第四緩存數據發送到所述客戶端。
一種緩存數據的裝置,包括:
第一數據獲取模塊,用於獲得第一緩存數據;
第一指令獲取模塊,用於獲取客戶端發送的數據獲取指令;
第一判斷模塊,用於判斷所述第一緩存數據中是否包含與所述數據獲取指令對應的數據;
第一發送模塊,用於在所述第一緩存數據中包含與所述數據獲取指令對應的數據時,將與所述數據獲取指令對應的所述第一緩存數據中的數據發送到所述客戶端。
優選地,所述第一數據獲取模塊包括:
第二指令獲取模塊,用於獲取所述客戶端發送的應用重啟指令;
第二數據獲取模塊,用於從伺服器的後端緩存介質的預設數據中獲取第一數據,其中,所述第一數據為當前訪問頻率大於預設頻率的數據,所述第一數據的數據容量值小於預設極大容量值;
第一緩存模塊,用於將獲取到的所述第一數據進行緩存,獲得第一緩存數據。
優選地,在所述第一緩存模塊將獲取到的所述第一數據進行緩存,獲得第一緩存數據之後,還包括:
第一記錄模塊,用於記錄所述第一緩存數據的緩存時間值;
第一刪除模塊,用於在所述第一緩存數據的緩存時間值等於預設的過期時間值時,刪除失效數據,其中所述失效數據為對應緩存時間值等於所述預設的過期時間值的數據。
優選地,在所述第一刪除模塊刪除失效數據之後,還包括:
第三數據獲取模塊,用於從所述後端緩存介質的預設數據中獲取第二數據,其中,所述第二數據為當前訪問頻率大於預設頻率的數據;
第二判斷模塊,用於判斷所述緩存裝置內緩存數據的剩餘容量值是否大於所述第二數據所佔容量值;
第二緩存模塊,用於在所述緩存裝置內緩存數據的剩餘容量值大於所述第二數據所佔容量值時,將獲取到的所述第二數據進行緩存,獲得第二緩存數據。
優選地,在所述第一緩存數據的緩存時間值小於預設的過期時間值時,所述第一發送模塊將與所述數據獲取指令對應的所述第一緩存數據中的數據發送到所述客戶端之後,還包括:
第二記錄模塊,用於記錄所述第一緩存數據的讀取次數;
第三判斷模塊,用於判斷在預設讀取時間值內,所述第一緩存數據的讀取次數是否小於預設讀取次數;
第二刪除模塊,用於在所述預設讀取時間值內,所述第一緩存數據的讀取次數小於預設讀取次數時,刪除對應小於所述預設讀取次數的所述緩存數據中的數據。
優選地,在所述第一判斷模塊判斷所述第一緩存數據中不包含與所述數據獲取指令對應的數據之後,還包括:
第四判斷模塊,用於判斷所述後端緩存介質的預設數據中是否包含與所述數據獲取指令對應的數據;
第四數據獲取模塊,用於在所述後端緩存介質的預設數據中包含與所述數據獲取指令對應的數據時,從所述後端緩存介質的預設數據中獲取與所述數據獲取指令對應的數據;
第五判斷模塊,用於判斷所述緩存裝置內緩存數據的剩餘容量值是否大於獲取到的與所述數據獲取指令對應的數據所佔容量值;
第三緩存模塊,用於在所述緩存裝置內緩存數據的剩餘容量值大於獲取到的與所述數據獲取指令對應的數據所佔容量值時,將獲取得到的與所述數據獲取指令對應的數據進行緩存,獲得第三緩存數據;
第二發送模塊,用於將所述第三緩存數據發送到所述客戶端;
第三刪除模塊,用於在所述緩存裝置內緩存數據的剩餘容量值小於或等於獲取到的與所述數據獲取指令對應的數據所佔容量值時,刪除容量值等於預設容量值的緩存數據;
第四緩存模塊,用於將獲取得到的與所述數據獲取指令對應的數據進行緩存,獲得第四緩存數據;
第三發送模塊,用於將所述第四緩存數據發送到所述客戶端。
經由上述的技術方案可知,與現有技術相比,本發明提供了一種緩存數據的方法及裝置,應用於緩存裝置,預先獲得第一緩存數據,通過在接收到客戶端發送來的數據獲取指令,且判斷所述第一緩存數據內包含有對應所述數據獲取指令的數據時,直接從所述緩存裝置中緩存的數據內找到與所述數據獲取指令所對應的數據,並發送給客戶端,避免了從後端緩存介質中讀取數據再反饋給用戶的過程,使得讀取的緩存數據不需要經過Socket通信,就能直接返回到客戶端,進而提高了讀取緩存數據的響應時間,且讀取的數據不經過網絡傳輸,又降低了跨網絡訪問發生故障的概率。
附圖說明
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的實施例,對於本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據提供的附圖獲得其他的附圖。
圖1為本發明實施例提供的一種緩存數據的方法流程圖;
圖2為本發明實施例提供的另一種緩存數據的方法流程圖;
圖3為本發明實施例提供的一種回收緩存數據的方法流程圖;
圖4為本發明實施例提供的一種從伺服器獲取緩存數據的方法流程圖;
圖5為本發明實施例提供的一種緩存數據的結構示意圖;
圖6為本發明實施例提供的另一種緩存數據的結構示意圖;
圖7為本發明實施例提供的一種回收緩存數據的結構示意圖;
圖8為本發明實施例提供的一種從伺服器獲取緩存數據的結構示意圖。
具體實施方式
下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基於本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬於本發明保護的範圍。
本實施例公開了一種緩存數據的方法,應用於緩存裝置,預先獲得第一緩存數據,請參見附圖1,所述方法具體包括以下步驟:
步驟101:獲取所述客戶端發送的數據獲取指令;
具體的,在確保將所述緩存裝置中存在預先加載的所述第一緩存數據後,只要獲取到用戶客戶端發送來的訪問請求,即數據獲取指令,就能在所述緩存裝置中繼續執行後續響應訪問的相關操作。
步驟102:判斷所述第一緩存數據中是否包含與所述數據獲取指令對應的數據,若包含,則執行步驟103;
具體的,在所述緩存裝置獲取到所述客戶端發送來的數據獲取指令時,需要先判斷一下內部預先緩存的所述第一緩存數據內是否有符合所述數據獲取指令所需的數據信息,只有在所述第一緩存數據內包含的數據命中了所述數據獲取指令所需的數據信息時,才能繼續進行後續的對客戶端訪問的應答過程。
步驟103:將與所述數據獲取指令對應的所述第一緩存數據中的數據發送到所述客戶端;
具體的,在所述第一緩存數據內包含的數據中有符合所述數據獲取指令所需的數據信息時,所述緩存裝置才將其內緩存的符合所述數據獲取指令所需的數據信息的緩存數據直接發送給所述客戶端,避免了網絡間的緩存調用。
本發明實施例公開的緩存數據的方法中,主要應用於本地建立的緩存裝置,預先獲得第一緩存數據,通過在獲取到所述客戶端發送的數據獲取指令,且判斷自身的所述第一緩存數據內包含有對應所述數據獲取指令的數據時,直接將與所述數據獲取指令對應的緩存數據發送給所述客戶端,進而避免了網絡間的緩存調用,實現了快速、便捷地數據讀取響應,同時,由於訪問讀取的數據不再經過網絡通信傳輸,也降低了跨網絡訪問發生故障的概率。
本實施例公開了另一種緩存數據的方法,應用於緩存裝置,請參見附圖2,所述方法具體包括以下步驟:
步驟201:獲取客戶端發送的應用重啟指令;
具體的,在本地客戶端,包含有一個緩存裝置,其中,該緩存裝置內包含一個VMCache的高速緩存層,用於緩存數據;在每次所述客戶端上的應用重新啟動後,所述緩存裝置內的高速緩存層VMCache中數據為空,需要重新獲取數據進行緩存,以便後期所述客戶端進行訪問時調用。
步驟202:從伺服器的後端緩存介質的預設數據中獲取第一數據,其中,所述第一數據為當前訪問頻率大於預設頻率的數據,所述第一數據的數據容量值小於預設極大容量值;
具體的,在獲取到所述客戶端發送的應用重啟指令,確定當前所述緩存裝置內的高速緩存層VMCache中數據為空後,此時通過Socket通信從應用伺服器內的後端緩存介質中預先加載的數據裡獲取部分訪問頻率較高的數據,即所述第一數據,同時,在獲取包含多種數據類型的所述第一數據時,還需要保證獲取到的所述第一數據所佔的容量值必須小於所述緩存裝置內的高速緩存層VMCache的極大容量值。
步驟203:將獲取到的所述第一數據進行緩存,獲得第一緩存數據;
具體的,在通過Socket通信從應用伺服器內的後端緩存介質中預先加載的數據裡獲取到所述第一數據之後,所述緩存裝置會將所述第一數據進行緩存,作為自身預加載的第一緩存數據,此時,只要所述客戶端內的應用不結束,則所述緩存裝置能夠多次將所述第一緩存數據返回給用戶,以完成多次訪問讀取。
步驟204:記錄所述第一緩存數據的緩存時間值;
具體的,所述緩存裝置在將所述第一數據內的全部數據依次進行緩存時,會記錄下這些數據分別被緩存時的具體時間值,以及它們分別緩存在所述緩存裝置內的持續時間值,並將記錄下的這兩個時間值作為所述第一緩存數據內所包含的任一數據的緩存時間值,以便為後續過期判斷提供依據。
步驟205:判斷所述第一緩存數據的緩存時間值是否等於預設的過期時間值,若小於,則執行步驟206a,若等於,則執行步驟206b;
具體的,在所述緩存裝置記錄了所述第一緩存數據內所包含的任一數據的緩存時間值時,並在所述緩存裝置還未獲取到所述客戶端發送的數據獲取指令之前,所述緩存裝置會實時判斷所述第一緩存數據內所包含的全部數據的緩存時間值是否達到了設定的過期時間戳,即預設的過期時間值,如果緩存的數據已經達到了過期時間,則對這些失效的數據進行過期處理,若還未達到,則繼續等待客戶端的訪問。
步驟206a:獲取所述客戶端發送的數據獲取指令,並執行步驟207;
具體的,在判斷所述第一緩存數據的緩存時間值小於預設的過期時間值,即不存在任何數據過期時,那麼在所述第一緩存數據中的數據未過期之前這一時間段內,可能會獲取到用戶客戶端的訪問請求,即數據獲取指令,此時,需要進行後續從所述緩存裝置內緩存的數據中驗證是否命中要訪問的數據信息,以便完成響應該訪問請求的返回操作。
步驟206b:刪除失效數據,其中所述失效數據為對應緩存時間值等於所述預設的過期時間值的數據,並執行步驟208;
具體的,在所述第一緩存數據的緩存時間值等於預設的過期時間值時,則所述緩存裝置直接將這些失效的數據刪除,以便為後續再次獲取新的數據提供緩存空間。
步驟207:判斷所述第一緩存數據中是否包含與所述數據獲取指令對應的數據,若包含,則執行步驟209。
具體的,在所述緩存裝置獲取到所述數據獲取指令之後,會先判斷其內緩存的數據是否包含所述數據獲取指令對應的數據,再根據判斷的結果進行相應的後續操作。
步驟208:從所述後端緩存介質的預設數據中獲取第二數據,其中,所述第二數據為當前訪問頻率大於預設頻率的數據,並執行步驟2010;
具體的,在所述緩存裝置刪除了部分或全部失效數據後,還會從應用伺服器的後端緩存介質中再次獲取新的數據,即第二數據,其中,由於所述應用伺服器內的後端緩存介質中的預設數據是能夠動態更新的,且其對預加載數據的過期管理可以與所述緩存裝置對緩存數據的過期管理保持一致,如數據過期的時間戳可以設置相同等,所以此時所述緩存介質再次獲取到的數據為所述後端緩存介質更新後的部分預設數據,且這些重新獲取到的數據的被訪問頻率仍然要大於預設頻率;
其次,再次獲取的第二數據內的數據類型可能與之前獲取的所述第一數據所包含數據的數據類型相同,也可能由於用戶近期訪問應用的不同及頻率的高低,導致應用伺服器後端緩存介質內更新後的預設數據所含的不同類型的數據當前訪問頻率發生了改變,進而也使得再次獲取的所述第二數據與之前獲取的所述第一數據所包含數據的數據類型不相同;
最後,將從所述後端緩存介質的預設數據中再次獲取到的當前訪問頻率高於預設頻率的數據作為第二數據,以便在用戶客戶端再次進行訪問,即所述客戶端發送新的數據獲取指令時,能夠將最新的緩存數據返回給用戶客戶端。
步驟209:將與所述數據獲取指令對應的所述第一緩存數據中的數據發送到所述客戶端。
步驟2010:判斷所述緩存裝置內緩存數據的剩餘容量值是否大於所述第二數據所佔容量值,若大於,則執行步驟2011;
具體的,由於所述緩存裝置刪除了其內的失效數據可能為之前緩存了的所述第一緩存數據的部分數據,所以在重新從所述應用伺服器的後端緩存介質的預設數據內獲取到所述第二數據時,還需要保證其內現存的所有數據的容量值仍然小於其預設極大容量值;而當所述緩存裝置刪除了其內的失效數據為之前緩存了的所述第一緩存數據的全部數據時,依舊需要控制再次獲取到的所述第二數據所佔容量值小於其內預設極大容量值。
步驟2011:將獲取到的所述第二數據進行緩存,獲得第二緩存數據;
具體的,在所述緩存裝置將其內失效的數據替換為重新從應用伺服器內的後端緩存介質中獲取到的當前訪問頻率較高的部分數據,即所述第二數據時,將所述第二數據作為其內的第二緩存數據再次緩存,以便後期獲取到用戶客戶端發送的訪問請求時,能夠直接從本地緩存裝置內已經緩存了的目前一段時間內訪問頻率較高的數據中返回用戶所需數據,提高數據讀取的響應速度。
本發明實施例公開的緩存數據的方法中,主要應用於緩存裝置,通過從應用伺服器的後端緩存介質內的預設數據中獲取訪問頻率較高的部分數據,作為自身的第一緩存數據,並分別記錄所述第一緩存數據內的數據所對應的緩存時間值,並將對應緩存時間值等於所述預設的過期時間值的數據及時刪除,來降低所述緩存裝置的內存消耗,之後,在重新從伺服器的後端緩存介質中的預設數據內獲取部分已經進行了動態更新的數據作為所述第二數據,並將其再次緩存到所述緩存裝置中,以便在接收到用戶客戶端的訪問時,能夠直接將最新的緩存數據返給用戶,既提高了數據被讀取後的響應時間,又滿足了用戶希望獲得應用的最新數據的期望。
本發明實施例中涉及到的步驟205的執行階段包括但不限於所述步驟204之後,還可能在所述步驟204之後的所有步驟執行過程中進行。
可選地,請參見附圖3,在上述實施例中涉及到的所述步驟206獲取所述客戶端發送的數據獲取指令之後,還包括:
步驟301:記錄所述第一緩存數據的讀取次數;
具體的,在所述緩存裝置從其內緩存的所述第一緩存數據內頻繁讀取數據返回給用戶客戶端的過程中,可能會出現所述第一緩存數據內的部分數據在還未過期失效之前,一直沒有被用戶訪問過,或是被訪問的次數很少,此時,為了降低所述緩存裝置的內存消耗,需要刪除這些數據,因此,在所述第一緩存數據不斷接收到客戶端的訪問時,需要記錄下被訪問數據對應的讀取次數,以便作為後續回收的依據。
步驟302:判斷在預設讀取時間值內,所述第一緩存數據的讀取次數是否小於預設讀取次數,若小於,則執行步驟303;
具體的,在所述第一緩存數據還未過期,且持續緩存的時間值處於所述預設讀取時間值之內的這段時間中,若判讀所述第一緩存數據所對應的讀取次數小於預設讀取次數時,則確定這部分數據為不經常被訪問的數據,需要對這些數據進行清理,以降低內存消耗。
步驟303:刪除對應小於所述預設讀取次數的所述緩存數據中的數據;
具體的,當所述第一緩存數據內存在在預設讀取時間值內,讀取次數小於所述預設讀取次數的數據時,說明這部分數據已經不是近期用戶訪問頻率較高的數據,需要對這部分數據進行回收刪除,以降低緩存裝置的內存消耗;
其次,所述緩存裝置在刪除這部分不經常被訪問的數據時,可以通過自定義的回收策略,利用繼承作為子類實現,其中,所述子類可以自定義實現如FIFO、LRU等緩存回收算法;同時,刪除的部分不經常被訪問的數據容量值一般為預設極大容量值的一半左右,而保留下來的數據則為訪問頻率較頻繁的數據,進而提高了緩存裝置對用戶客戶端訪問數據的命中率;而在對緩存數據回收刪除期間,也間接地實現了緩存空間的彈性擴充和收縮,以避免無法重新獲取新的數據進行緩存。
本發明實施例中,通過對所述緩存裝置內已經緩存了的所述第一緩存數據內的數據進行在所述預設讀取時間值內讀取次數的記錄,來完成對不經常被訪問的數據進行刪除,以提高緩存裝置對用戶客戶端訪問數據的命中率,也實現了緩存空間的彈性擴充和收縮,避免無法重新獲取新的數據進行緩存。
可選地,請參見附圖4,在上述實施例中涉及到的所述步驟207判斷所述第一緩存數據中不包含與所述數據獲取指令對應的數據時,還包括:
步驟401:判斷所述後端緩存介質的預設數據中是否包含與所述數據獲取指令對應的數據,若包含,則執行步驟402;
具體的,在所述第一緩存數據中不包含與所述數據獲取指令對應的數據時,所述客戶端會通過網絡通信從伺服器的後端緩存介質中的預設數據內查找是否含有與所述數據獲取指令對應的數據,其中,所述伺服器的後端緩存介質包括一級緩存介質,如RAMCloud,以及後端資料庫。
步驟402:從所述後端緩存介質的預設數據中獲取與所述數據獲取指令對應的數據,並執行步驟403;
具體的,所述客戶端會先通過網絡通信從伺服器的一級緩存介質,如RAMCloud中查找是否含有與所述數據獲取指令對應的數據,若存在,則直接從所述一級緩存介質中獲取對應數據;若不存在,則再從所述後端資料庫中獲取其對應的數據,進而減輕了後端資料庫的壓力。
步驟403:判斷所述緩存裝置內緩存數據的剩餘容量值是否大於獲取到的與所述數據獲取指令對應的數據所佔容量值,若大於,則執行步驟404a,若小於或等於,則執行步驟404b;
具體的,在確定了所述伺服器的一級緩存介質或是後端資料庫中包含有與所述數據獲取指令對應的數據時,由於所述緩存裝置內的第一緩存數據的緩存時間值還未超過預設的過期時間值,還需判斷當前所述緩存裝置內緩存數據的剩餘容量值是否能夠容納再次從所述伺服器的一級緩存介質或是後端資料庫中獲取的數據。
步驟404a:將獲取得到的與所述數據獲取指令對應的數據進行緩存,獲得第三緩存數據,並執行步驟405;
具體的,在當前所述緩存裝置內緩存數據的剩餘容量值能夠容納再次從所述伺服器的一級緩存介質或是後端資料庫中獲取的數據時,才將這些新獲取到的數據成功緩存到所述緩存裝置。
步驟404b:刪除容量值等於預設容量值的緩存數據,並執行步驟406;
具體的,所述緩存裝置可以依據自定義的回收策略來刪除部分不經常被訪問的數據,所述預設容量值可以為容量值等於從所述伺服器的一級緩存介質或是後端資料庫中新獲取到的數據的容量,也可以大於從所述伺服器的一級緩存介質或是後端資料庫中新獲取到的數據的容量。
步驟405:將所述第三緩存數據發送到所述客戶端。
步驟406:將獲取得到的與所述數據獲取指令對應的數據進行緩存,獲得第四緩存數據,並執行步驟407。
步驟407:將所述第四緩存數據發送到所述客戶端。
本發明實施例中,通過在所述客戶端無法直接從所述緩存裝置中讀取對應的數據時,從所述伺服器的後端緩存介質中查找到對應數據,並在所述緩存裝置能夠容納這些對應數據時,將這些數據先緩存到所述緩存裝置,再由所述緩存裝置直接發送到所述客戶端,進而方便客戶端在後期需要再次訪問這些數據時,能夠避免網絡間的緩存調用,直接從緩存裝置獲取,而在所述緩存裝置無法全部容納這些對應數據時,需要先清理掉部分緩存數據,以便能夠將這些對應數據成功緩存到緩存裝置中,以供用戶再次訪問時讀取,縮短數據響應時間。
本實施例公開了一種緩存數據的裝置,請參見附圖5,所述裝置包括:
第一數據獲取模塊501,用於獲得第一緩存數據;
具體的,所述第一數據獲取模塊501將所述第一緩存數據進行提前加載,以便後續響應用戶客戶端的訪問請求。
第一指令獲取模塊502,用於獲取客戶端發送的數據獲取指令;
第一判斷模塊503,用於判斷所述第一緩存數據中是否包含與所述數據獲取指令對應的數據;
具體的,在接收到所述第一指令獲取模塊502獲取到所述客戶端發送的數據獲取指令時,還需要經過所述第一判斷模塊503來判斷一下所述第一數據獲取模塊501中獲得的第一緩存數據內是否包含了與所述數據獲取指令對應的數據,只有在包含了其對應的數據時,才能從所述裝置內直接獲取。
第一發送模塊504,用於在所述第一緩存數據中包含與所述數據獲取指令對應的數據時,將與所述數據獲取指令對應的所述第一緩存數據中的數據發送到所述客戶端;
具體的,在所述第一判斷模塊503確定了所述第一數據獲取模塊501中獲得的第一緩存數據內包含了與所述數據獲取指令對應的數據時,由所述第一發送模塊504將與之對應的數據直接發送給所述客戶端,完成用戶的訪問需求。
本發明實施例公開的緩存數據的裝置,通過所述第一數據獲取模塊501提前加載所述第一緩存數據,並在所述第一指令獲取模塊502獲取到所述客戶端發送的數據獲取指令時,先經過所述第一判斷模塊503判斷出所述第一緩存數據中包含與所述數據獲取指令對應的數據,再由所述第一發送模塊504將與所述數據獲取指令對應的所述第一緩存數據中的數據發送到所述客戶端,進而避免了網絡間的緩存調用,實現了快速、便捷地數據讀取響應,同時,由於訪問讀取的數據不再經過網絡通信傳輸,也降低了跨網絡訪問發生故障的概率。
本實施例公開了另一種緩存數據的裝置,請參見附圖6,所述裝置包括:
所述第一數據獲取模塊501、所述第一指令獲取模塊502、所述第一判斷模塊503、所述第一發送模塊504、第一記錄模塊505、第一刪除模塊506、第三數據獲取模塊507、第二判斷模塊508以及第二緩存模塊509;
其中,所述第一數據獲取模塊501包括:
第二指令獲取模塊5011,用於獲取所述客戶端發送的應用重啟指令;
具體的,由於所述裝置會在用戶客戶端每次重新啟動應用時,將之前緩存的數據全部清除,因此在所述第一指令獲取模塊501每次獲取到客戶端發送的應用重啟指令時,就需要再次獲取數據進行緩存,以便後期所述客戶端進行訪問時調用。
第二數據獲取模塊5012,用於從伺服器的後端緩存介質的預設數據中獲取第一數據,其中,所述第一數據為當前訪問頻率大於預設頻率的數據,所述第一數據的數據容量值小於預設極大容量值;
具體的,在所述第一指令獲取模塊501獲取到客戶端發送的應用重啟指令時,所述第一數據獲取模塊502就通過網絡通信從伺服器的後端緩存介質的預設數據中獲取當前訪問頻率較高的數據,作為第一數據,且獲取到的所述第一數據所佔的容量值小於所述裝置的預設極大容量值。
第一緩存模塊5013,用於將獲取到的所述第一數據進行緩存,獲得第一緩存數據。
所述第一記錄模塊505,用於記錄所述第一緩存數據的緩存時間值;
具體的,在所述第一緩存模塊5013獲得第一緩存數據時,所述第一記錄模塊505會將進行緩存的所述第一數據的緩存時間分別記錄下來,作為後期過期判斷提供依據。
所述第一刪除模塊506,用於在所述第一緩存數據的緩存時間值等於預設的過期時間值時,刪除失效數據,其中所述失效數據為對應緩存時間值等於所述預設的過期時間值的數據;
具體的,所述第一記錄模塊505將所述第一緩存模塊5013依次進行緩存而獲得的所述第一緩存數據所對應的緩存時間進行記錄,並在所述第一記錄模塊505記錄有屬於所述第一緩存數據的部分或全部數據所對應的緩存時間值等於預設的過期時間值時,由所述第一刪除模塊506將這部分數據進行刪除,進而降低所述裝置的內存消耗。
此時,所述第一指令獲取模塊502,還用於在所述第一緩存數據的緩存時間值小於預設的過期時間值時,獲取所述客戶端發送的數據獲取指令;
具體的,在所述第一記錄模塊505記錄的所述第一緩存數據的全部數據所對應的緩存時間值均小於預設的過期時間值時,由所述第一指令獲取模塊502獲取所述客戶端發送的數據獲取指令,以便繼續執行後續讀取緩存數據的操作,實現對用戶訪問進行的數據響應。
所述第三數據獲取模塊507,用於從所述後端緩存介質的預設數據中獲取第二數據,其中,所述第二數據為當前訪問頻率大於預設頻率的數據;
具體的,在所述第一刪除模塊506刪除了所述第一緩存數據中的失效數據後,由所述第三數據獲取模塊507從所述後端緩存介質的預設數據中獲取當前用戶訪問頻率較高的部分數據,作為所述第二數據,且所述第二數據的數據類型與之前獲取到的所述第一數據的數據類型可以相同,也可以不相同。
所述第二判斷模塊508,用於判斷所述緩存裝置內緩存數據的剩餘容量值是否大於所述第二數據所佔容量值;
具體的,在將所述第三數據獲取模塊507獲取到的所述第二數據進行緩存之前,還需要由所述第二判斷模塊508判斷一下當前所述緩存裝置內的剩餘空間是否能夠全部容納再次獲取的所述第二數據。
所述第二緩存模塊509,用於在所述緩存裝置內緩存數據的剩餘容量值大於所述第二數據所佔容量值時,將獲取到的所述第二數據進行緩存,獲得第二緩存數據;
具體的,在由所述第二判斷模塊508判斷所述第三數據獲取模塊507獲取到的所述第二數據滿足要求時,所述第二緩存模塊509通過緩存獲得第二緩存數據,此時,所述裝置內緩存的數據容量值仍然小於預設極大容量值。
本發明實施例公開的緩存數據的裝置中,通過在所述第一緩存模塊5013獲得第一緩存數據後,所述第一記錄模塊505記錄所述第一緩存數據的緩存時間值,並由所述第一刪除模塊506將屬於所述第一緩存數據中的失效數據進行刪除,進而降低所述緩存裝置的內存消耗,之後,所述第三數據獲取模塊507重新從所述後端緩存介質的預設數據中獲取當前用戶訪問頻率較高的部分數據,作為所述第二數據,並在所述第二判斷模塊508確定所述裝置的剩餘容量值能夠容納所述第二數據時,由所述第二緩存模塊509將其進行緩存,獲得所述第二緩存數據,以便在接收到用戶客戶端的訪問時,能夠直接將最新的緩存數據返給用戶,既提高了數據被讀取後的響應時間,又滿足了用戶希望獲得應用的最新數據的期望。
本發明實施例提供的各個模塊的工作過程,請參照附圖2所對應的流程圖,具體工作過程不再贅述。
可選地,請參見附圖7,上述實施例涉及到的所述第一發送模塊506,在所述第一緩存數據的緩存時間值小於預設的過期時間值時,將與所述數據獲取指令對應的所述第一緩存數據中的數據發送到所述客戶端之後,所述裝置還包括:
第二記錄模塊601,用於記錄所述第一緩存數據的讀取次數;
具體的,在所述第一發送模塊504在所述第一緩存數據內的數據未過期前,將對應用戶客戶端數據獲取指令的數據發送給所述客戶端後,所述第二記錄模塊601會將這些被訪問過的數據及訪問次數記錄下來,以此來判斷一段時間內是否目前緩存的數據中有訪問不頻繁的數據存在。
第三判斷模塊602,用於判斷在預設讀取時間值內,所述第一緩存數據的讀取次數是否小於預設讀取次數;
具體的,在所述第一緩存數據還未過期,且持續緩存的時間值處於所述預設讀取時間值之內的這段時間中,由所述第三判斷模塊602判斷在預設讀取時間值內,所述第一緩存數據的讀取次數是否小於預設讀取次數,以此來確定所述第一緩存數據中是否存在不經常訪問的數據。
第二刪除模塊603,用於在所述預設讀取時間值內,所述第一緩存數據的讀取次數小於預設讀取次數時,刪除對應小於所述預設讀取次數的所述緩存數據中的數據;
具體的,通過所述第二記錄模601記錄的所述第一緩存數據內全部數據對應的被訪問次數,由所述第三判斷模塊602確定出所述第一緩存數據內哪些數據屬於不經常被訪問的數據,即其讀取次數小於預設讀取次數的數據,之後所述第二刪除模塊603將這部分數據依據自定義的回收策略進行刪除,進而提高了緩存數據對用戶客戶端訪問數據的命中率,也間接地實現了緩存空間的彈性擴充和收縮,以避免無法重新獲取新的數據進行緩存。
本發明實施例中,通過所述第三判斷模塊602判斷所述第二記錄模601記錄的所述第一緩存數據內的數據進行讀取的次數的多少,來確定出是否存在不經常訪問的數據,再由所述第二刪除模塊603來完成對不經常被訪問的數據的刪除操作,以提高緩存裝置對用戶客戶端訪問數據的命中率,也實現了緩存空間的彈性擴充和收縮,避免無法重新獲取新的數據進行緩存。
可選地,請參見附圖8,上述實施例涉及到的所述第一判斷模塊503,在判斷所述第一緩存數據中不包含與所述數據獲取指令對應的數據之後,所述裝置還包括:
第四判斷模塊701,用於判斷所述後端緩存介質的預設數據中是否包含與所述數據獲取指令對應的數據;
具體的,在所述第一判斷模塊505判斷所述第一緩存數據中不包含與所述數據獲取指令對應的數據時,所述第四判斷模塊701通過網絡通信判斷所述後端緩存介質的預設數據中是否包含與所述數據獲取指令對應的數據,其中,所述後端緩存介質包括一級緩存介質,如RAMCloud,以及後端資料庫。
第四數據獲取模塊702,用於在所述後端緩存介質的預設數據中包含與所述數據獲取指令對應的數據時,從所述後端緩存介質的預設數據中獲取與所述數據獲取指令對應的數據;
具體的,所述第四數據獲取模塊702先通過網絡通信從伺服器的一級緩存介質,如RAMCloud中查找是否含有與所述數據獲取指令對應的數據,若存在,則直接從所述一級緩存介質中獲取對應數據;若不存在,則再從所述後端資料庫中獲取其對應的數據,進而減輕了後端資料庫的壓力。
第五判斷模塊703,用於判斷所述緩存裝置內緩存數據的剩餘容量值是否大於獲取到的與所述數據獲取指令對應的數據所佔容量值;
具體的,在所述第四數據獲取模塊702從所述後端緩存介質中的一級緩存介質或是後端資料庫中獲取新的數據後,還需由所述第五判斷模塊703判斷所述緩存裝置內緩存數據的剩餘容量值是否能夠容納獲取到的與所述數據獲取指令對應的數據。
第三緩存模塊704,用於在所述緩存裝置內緩存數據的剩餘容量值大於獲取到的與所述數據獲取指令對應的數據所佔容量值時,將獲取得到的與所述數據獲取指令對應的數據進行緩存,獲得第三緩存數據;
具體的,在所述第五判斷模塊703判斷所述緩存裝置內緩存數據的剩餘容量值大於獲取到的與所述數據獲取指令對應的數據所佔容量值時,由所述第三緩存模塊704將獲取到的新的數據進行緩存,以便用戶訪問時直接從所述第三緩存模塊704中讀取數據。
第二發送模塊705,用於將所述第三緩存數據發送到所述客戶端;
第三刪除模塊706,用於在所述緩存裝置內緩存數據的剩餘容量值小於或等於獲取到的與所述數據獲取指令對應的數據所佔容量值時,刪除容量值等於預設容量值的緩存數據;
具體的,在所述第五判斷模塊703判斷所述緩存裝置內緩存數據的剩餘容量值小於或等於獲取到的與所述數據獲取指令對應的數據所佔容量值時,由所述第三刪除模塊706依據自定義的回收策略刪除容量值等於預設容量值的緩存數據。
第四緩存模塊707,用於將獲取得到的與所述數據獲取指令對應的數據進行緩存,獲得第四緩存數據;
第三發送模塊708,用於將所述第四緩存數據發送到所述客戶端。
本發明實施例中,所述第一判斷模塊505在判斷所述第一緩存數據中不包含與所述數據獲取指令對應的數據,且所述第四判斷模塊701判斷所述後端緩存介質的預設數據中包含與所述數據獲取指令對應的數據的情況下,通過所述第四數據獲取模塊702從所述後端緩存介質的預設數據中獲取與所述數據獲取指令對應的數據,並在所述第五判斷模塊703判斷所述緩存裝置內緩存數據的剩餘容量值大於獲取到的與所述數據獲取指令對應的數據所佔容量值時,由所述第三緩存模塊704將獲取得到的與所述數據獲取指令對應的數據進行緩存,獲得第三緩存數據,再由所述第二發送模塊705將所述第三緩存數據發送到所述客戶端,進而方便客戶端在後期需要再次訪問這些數據時,能夠避免網絡間的緩存調用,直接從緩存裝置獲取,而在所述緩存裝置無法全部容納這些對應數據時,需要先清理掉部分緩存數據,以便能夠將這些對應數據成功緩存到緩存裝置中,以供用戶再次訪問時讀取,縮短數據響應時間。
對所公開的實施例的上述說明,使本領域專業技術人員能夠實現或使用本發明。對這些實施例的多種修改對本領域的專業技術人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發明的精神或範圍的情況下,在其它實施例中實現。因此,本發明將不會被限制於本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的範圍。