本發(fā)明涉及數(shù)據(jù)緩存領(lǐng)域,特別涉及一種數(shù)據(jù)讀寫方法、裝置、設(shè)備及計算機可讀存儲介質(zhì)。
背景技術(shù):
1、隨著計算機和網(wǎng)絡(luò)技術(shù)的快速發(fā)展,對內(nèi)存容量提出更高的要求。在連續(xù)大量數(shù)據(jù)混合讀寫的極端場景下,直接內(nèi)存和持久內(nèi)存所組成的緩存池容量相比較于要寫入的消息大小是相對有限的,因此在后期寫入和讀取時會不可避免地重復使用緩存。
2、由于緩存的速度和延遲表現(xiàn)遠遠好于固態(tài)硬盤(ssd,solid?state?disk),所以需要充分利用好有限的緩存空間。因此,如何提高緩存空間的利用率和復用率是當前亟需解決的問題。
技術(shù)實現(xiàn)思路
1、有鑒于此,本發(fā)明的目的在于提供一種數(shù)據(jù)讀寫方法、裝置、設(shè)備及計算機可讀存儲介質(zhì),解決了現(xiàn)有技術(shù)中緩存空間利用率和復用率差的問題。
2、為解決上述技術(shù)問題,本發(fā)明提供了一種數(shù)據(jù)讀寫方法,包括:
3、根據(jù)緩存數(shù)據(jù)中各消息的容量大小確定各自對應的目標子緩存池,根據(jù)各自對應的所述目標子緩存池中緩存塊的容量大小確定各自對應的目標緩存塊,將所述各消息寫入各自對應的所述目標緩存塊中;
4、根據(jù)消息的讀取情況確定釋放的緩存塊,并將所述釋放的緩存塊放置于對應級別的子緩存池中。
5、一方面,在根據(jù)緩存數(shù)據(jù)中各消息的容量大小確定各自對應的目標子緩存池之前,還包括:
6、根據(jù)所述緩存數(shù)據(jù)的容量大小和所述緩存池的容量大小確定劃分級數(shù);
7、根據(jù)所述劃分級數(shù)劃分所述緩存池,得到各級別的子緩存池;
8、根據(jù)所述緩存數(shù)據(jù)中各消息的容量大小劃分所述各級別的子緩存池,得到各緩存塊。
9、一方面,在根據(jù)緩存數(shù)據(jù)中各消息的容量大小確定各自對應的目標子緩存池之前,還包括:
10、當所述緩存數(shù)據(jù)的容量大小大于所述緩存池的空余空間容量時,則對所述緩存數(shù)據(jù)進行篩選,得到篩選后的消息;
11、相應的,所述根據(jù)緩存數(shù)據(jù)中各消息的容量大小確定各自對應的目標子緩存池,包括:
12、根據(jù)各所述篩選后的消息的容量大小確定各自對應的目標子緩存池。
13、一方面,所述緩存池包括直接內(nèi)存和持久內(nèi)存,所述直接內(nèi)存和所述持久內(nèi)存中均包含多種不同級別的所述子緩存池,所述直接內(nèi)存的緩存優(yōu)先級高于所述持久內(nèi)存。
14、一方面,還包括:
15、實時獲取當前時刻緩存池的空閑容量;
16、根據(jù)所述當前時刻緩存池的空閑容量和所述緩存數(shù)據(jù)的容量大小計算得到緩存率;
17、根據(jù)所述緩存率確定讀寫效率。
18、一方面,根據(jù)緩存數(shù)據(jù)中各消息的容量大小確定各自對應的目標子緩存池,根據(jù)各自對應的所述目標子緩存池中緩存塊的容量大小確定各自對應的目標緩存塊,將所述各消息寫入各自對應的所述目標緩存塊中,包括:
19、判斷當前消息的容量大小;所述當前消息為所述各消息;
20、根據(jù)所述當前消息的容量大小確定初始子緩存池;所述初始子緩存池中包含大于所述當前消息的容量大小的緩存塊,也包含小于等于所述當前消息的容量大小的緩存塊;
21、若所述初始子緩存池為最高級別的子緩存池,且所述最高級別的子緩存池中留有空閑緩存塊,則通過所述當前消息寫滿所述空閑緩存塊,并將所述當前消息中未寫入所述空閑緩存塊的多余數(shù)據(jù)寫入其他內(nèi)存中;所述最高級別的子緩存池為緩存空間最大的子緩存池;
22、若所述初始子緩存池不是最高級別的子緩存池,則將所述初始子緩存池的上一級別的子緩存池作為所述目標子緩存池,將所述當前消息寫入所述目標子緩存池中空間最小的空閑緩存塊中。
23、一方面,根據(jù)消息的讀取情況確定釋放的緩存塊,包括:
24、當讀取的消息為消息隊列的第n條消息時,則將所述消息隊列的前n-1條消息所占用的緩存塊進行釋放;
25、實時記錄各個消息主題的消息讀取次數(shù),將在預設(shè)時間段內(nèi)所述消息讀取次數(shù)為0的消息主題確定為待釋放主題;
26、將所述待釋放主題下所有消息所在的緩存塊進行釋放。
27、本發(fā)明還提供了一種數(shù)據(jù)讀寫裝置,包括:
28、寫入模塊,用于根據(jù)緩存數(shù)據(jù)中各消息的容量大小確定各自對應的目標子緩存池,根據(jù)各自對應的所述目標子緩存池中緩存塊的容量大小確定各自對應的目標緩存塊,將所述各消息寫入各自對應的所述目標緩存塊中;
29、讀取模塊,用于根據(jù)消息的讀取情況確定釋放的緩存塊,并將所述釋放的緩存塊放置于對應級別的子緩存池中。
30、本發(fā)明還提供了一種數(shù)據(jù)讀寫設(shè)備,包括:
31、存儲器,用于存儲計算機程序;
32、處理器,用于執(zhí)行所述計算機程序時實現(xiàn)如上述的數(shù)據(jù)讀寫方法的步驟。
33、本發(fā)明還提供了一種計算機可讀存儲介質(zhì),所述計算機可讀存儲介質(zhì)上存儲有計算機程序,所述計算機程序被處理器執(zhí)行時實現(xiàn)如上述的數(shù)據(jù)讀寫方法的步驟。
34、本發(fā)明還提供一種計算機程序產(chǎn)品,包括計算機程序/指令,該計算機程序/指令被處理器執(zhí)行時實現(xiàn)權(quán)利要求上述數(shù)據(jù)讀寫方法的步驟。
35、由上述技術(shù)方案可以看出,根據(jù)緩存數(shù)據(jù)中各消息的容量大小確定各自對應的目標子緩存池,根據(jù)各自對應的目標子緩存池中緩存塊的容量大小確定各自對應的目標緩存塊,將各消息寫入各自對應的目標緩存塊中;根據(jù)消息的讀取情況確定釋放的緩存塊,并將釋放的緩存塊放置于對應級別的子緩存池中。本發(fā)明的有益效果在于:通過預先對緩存池進行劃分,按照容量大小對緩存塊進行了分級處理,不同等級的子緩存池存放著一定大小空間范圍的緩存塊,這樣在消息寫入時能夠?qū)懭氲綄泳彺娉氐木彺鎵K中,不浪費緩存空間,在消息讀取時能夠及時釋放緩存空間,提高緩存池的復用率。這樣進一步讓中間件消息的讀寫更多地用到高速緩存,這樣就可以提升中間件的性能。
36、此外,本發(fā)明還提供了一種數(shù)據(jù)讀寫裝置、設(shè)備及計算機可讀存儲介質(zhì),同樣具有上述有益效果。
1.一種數(shù)據(jù)讀寫方法,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)讀寫方法,其特征在于,在根據(jù)緩存數(shù)據(jù)中各消息的容量大小確定各自對應的目標子緩存池之前,還包括:
3.根據(jù)權(quán)利要求1所述的數(shù)據(jù)讀寫方法,其特征在于,在根據(jù)緩存數(shù)據(jù)中各消息的容量大小確定各自對應的目標子緩存池之前,還包括:
4.根據(jù)權(quán)利要求1所述的數(shù)據(jù)讀寫方法,其特征在于,所述緩存池包括直接內(nèi)存和持久內(nèi)存,所述直接內(nèi)存和所述持久內(nèi)存中均包含多種不同級別的所述子緩存池,所述直接內(nèi)存的緩存優(yōu)先級高于所述持久內(nèi)存。
5.根據(jù)權(quán)利要求1所述的數(shù)據(jù)讀寫方法,其特征在于,還包括:
6.根據(jù)權(quán)利要求1至5任一項所述的數(shù)據(jù)讀寫方法,其特征在于,根據(jù)緩存數(shù)據(jù)中各消息的容量大小確定各自對應的目標子緩存池,根據(jù)各自對應的所述目標子緩存池中緩存塊的容量大小確定各自對應的目標緩存塊,將所述各消息寫入各自對應的所述目標緩存塊中,包括:
7.根據(jù)權(quán)利要求1所述的數(shù)據(jù)讀寫方法,其特征在于,根據(jù)消息的讀取情況確定釋放的緩存塊,包括:
8.一種數(shù)據(jù)讀寫裝置,其特征在于,包括:
9.一種數(shù)據(jù)讀寫設(shè)備,其特征在于,包括:
10.一種計算機可讀存儲介質(zhì),其特征在于,所述計算機可讀存儲介質(zhì)上存儲有計算機程序,所述計算機程序被處理器執(zhí)行時實現(xiàn)如權(quán)利要求1至7任一項所述的數(shù)據(jù)讀寫方法的步驟。