本發(fā)明屬于計算機技術領域,尤其涉及一種數(shù)據(jù)讀取方法及裝置。
背景技術:
隨著移動互聯(lián)網(wǎng)技術的不斷發(fā)展,用戶對數(shù)據(jù)獲取的時效性要求越來越高。例如,用戶使用終端側的客戶端時,客戶端通常需要從服務器加載數(shù)據(jù),如果客戶端從服務器獲取數(shù)據(jù)的過程過于緩慢和耗時,導致客戶端的加載速度很慢,這將嚴重影響用戶的體驗。
傳統(tǒng)的數(shù)據(jù)加載技術方案,用戶在客戶端上進行數(shù)據(jù)獲取操作時,客戶端會產(chǎn)生相應的數(shù)據(jù)獲取請求并發(fā)送給服務器。服務器每次收到數(shù)據(jù)獲取請求,都需要調用后臺的開發(fā)語言(由于服務器與緩存、數(shù)據(jù)庫屬于不同的系統(tǒng),服務器無法直接訪問緩存、數(shù)據(jù)庫,必須調用后臺開發(fā)語言訪問緩存、數(shù)據(jù)庫)。然后,開發(fā)語言框架獲取該請求對應的數(shù)據(jù)并反饋給客戶端。此外,開發(fā)語言框架順序響應請求,即,開發(fā)語言響應完一個請求后,才會繼續(xù)處理下一個請求。因此,服務器調用開發(fā)語言框架處理請求的過程非常耗時,導致數(shù)據(jù)讀取速度緩慢,服務器的大量資源被浪費。在高并發(fā)的情況下,如果重復這樣的流程,將會造成系統(tǒng)崩潰。
技術實現(xiàn)要素:
有鑒于此,本申請的目的在于提供一種數(shù)據(jù)讀取方法及裝置,以提高數(shù)據(jù)讀取效率,提高用戶體驗。
第一方面,本申請?zhí)峁┮环N數(shù)據(jù)讀取方法,應用于服務器中,包括:
接收數(shù)據(jù)獲取請求;
解析所述數(shù)據(jù)獲取請求,得到所述數(shù)據(jù)獲取請求所請求獲得的數(shù)據(jù)對應的數(shù)據(jù)信息;
判斷緩存系統(tǒng)中是否包含所述數(shù)據(jù)信息對應的數(shù)據(jù);
如果所述緩存系統(tǒng)中包含所述數(shù)據(jù)信息對應的數(shù)據(jù),則直接從所述緩存系統(tǒng)中獲取所述數(shù)據(jù)信息對應的緩存數(shù)據(jù)。
可選地,所述解析所述數(shù)據(jù)獲取請求,得到所述數(shù)據(jù)獲取請求所請求獲得的數(shù)據(jù)對應的數(shù)據(jù)信息,包括:
解析所述數(shù)據(jù)獲取請求,得到所述數(shù)據(jù)獲取請求所請求獲得的數(shù)據(jù)對應的參數(shù)信息;
利用加密算法對所述參數(shù)信息進行加密運算,得到所述數(shù)據(jù)信息。
可選地,所述服務器中存儲有緩存數(shù)據(jù)索引,所述緩存數(shù)據(jù)索引從所述緩存系統(tǒng)中獲得;
所述判斷緩存系統(tǒng)中是否包含所述數(shù)據(jù)信息對應的數(shù)據(jù),包括:
查找所述緩存數(shù)據(jù)索引中是否包含所述數(shù)據(jù)信息;
如果所述緩存數(shù)據(jù)索引中包含所述數(shù)據(jù)信息,則確定所述緩存系統(tǒng)中包含所述數(shù)據(jù)信息對應的數(shù)據(jù);
如果所述緩存數(shù)據(jù)索引中不包含所述數(shù)據(jù)信息,則確定所述緩存系統(tǒng)中不包含所述數(shù)據(jù)信息對應的數(shù)據(jù)。
可選地,所述查找所述緩存數(shù)據(jù)索引中是否包含所述數(shù)據(jù)信息,包括:
所述服務器將所述數(shù)據(jù)信息轉換得到數(shù)據(jù)索引;
查找所述緩存數(shù)據(jù)索引中是否包含所述數(shù)據(jù)索引;
如果所述緩存數(shù)據(jù)索引中包含所述數(shù)據(jù)索引,則確定所述緩存數(shù)據(jù)索引中包含所述數(shù)據(jù)信息;
如果所述緩存數(shù)據(jù)索引中不包含所述數(shù)據(jù)索引,則確定所述緩存數(shù)據(jù)索引中不包含所述數(shù)據(jù)信息。
可選地,如果所述緩存數(shù)據(jù)索引中包含所述數(shù)據(jù)信息,則所述服務器直接從緩存系統(tǒng)中獲取所述數(shù)據(jù)信息對應的緩存數(shù)據(jù),包括:
如果確定所述緩存數(shù)據(jù)索引中包含所述數(shù)據(jù)信息,則根據(jù)所述數(shù)據(jù)信息轉換得到的數(shù)據(jù)索引生成緩存數(shù)據(jù)讀取請求,所述緩存數(shù)據(jù)讀取請求的POST請求參數(shù)是接口名,所述POST請求參數(shù)的參數(shù)是所述接口名對應接口的參數(shù);
將所述緩存數(shù)據(jù)讀取請求發(fā)送給緩存系統(tǒng),以使所述緩存系統(tǒng)響應所述緩存數(shù)據(jù)讀取請求;
接收所述緩存系統(tǒng)返回的所述數(shù)據(jù)信息對應的緩存數(shù)據(jù)。
可選地,所述服務器內(nèi)設置有常駐內(nèi)存的線程池,所述線程池內(nèi)包含多個線程對象,當接收到所述數(shù)據(jù)獲取請求后,調用所述線程池內(nèi)的任意一個所述線程對象執(zhí)行所述接收數(shù)據(jù)獲取請求之后的各個步驟。
可選地,所述方法還包括:
如果所述緩存系統(tǒng)中不包含所述數(shù)據(jù)信息,則調用開發(fā)語言從數(shù)據(jù)庫中獲取所述數(shù)據(jù)信息對應的數(shù)據(jù);
在處理所述數(shù)據(jù)獲取請求的當前線程調用開發(fā)語言從數(shù)據(jù)庫中獲取所述目標數(shù)據(jù)的同時,所述當前線程接收下一個數(shù)據(jù)獲取請求,并響應所述下一個數(shù)據(jù)獲取請求。
第二方面,本申請還提供一種數(shù)據(jù)讀取裝置,應用于服務器中,包括:
接收單元,用于接收數(shù)據(jù)獲取請求;
解析單元,用于解析所述數(shù)據(jù)獲取請求,得到所述數(shù)據(jù)獲取請求所請求獲得的數(shù)據(jù)對應的數(shù)據(jù)信息;
判斷單元,用于判斷緩存系統(tǒng)中是否包含所述數(shù)據(jù)信息對應的數(shù)據(jù);
數(shù)據(jù)讀取單元,用于當所述緩存系統(tǒng)中包含所述數(shù)據(jù)信息對應的數(shù)據(jù)時,直接從所述緩存系統(tǒng)中獲取所述數(shù)據(jù)信息對應的緩存數(shù)據(jù)。
可選地,所述服務器內(nèi)設置有常駐內(nèi)存的線程池,所述線程池內(nèi)包含多個線程對象,調用所述線程池中的任意一個線程對象依次執(zhí)行所述接收單元、解析單元、判斷單元和數(shù)據(jù)讀取單元的動作。
可選地,所述裝置還包括:
調用單元,用于當所述緩存系統(tǒng)中不包含所述數(shù)據(jù)信息對應的數(shù)據(jù)時,調用開發(fā)語言從數(shù)據(jù)庫中獲取所述數(shù)據(jù)信息對應的數(shù)據(jù);
在處理所述數(shù)據(jù)獲取請求的當前線程調用開發(fā)語言從數(shù)據(jù)庫中獲取所述目標數(shù)據(jù)的同時,所述當前線程通過所述接收單元接收下一個數(shù)據(jù)獲取請求,并響應所述下一個數(shù)據(jù)獲取請求。
本申請?zhí)峁┑臄?shù)據(jù)讀取方法,當服務器接收到客戶端發(fā)送的數(shù)據(jù)獲取請求后,服務器解析該數(shù)據(jù)獲取請求,得到客戶端所要獲取的數(shù)據(jù)對應的數(shù)據(jù)信息。服務器查找本地存儲的緩存數(shù)據(jù)索引中是否包含該數(shù)據(jù)信息,如果包含,表明緩存系統(tǒng)中存儲有客戶端所請求獲得的數(shù)據(jù),此時,服務器直接從緩存系統(tǒng)中讀取客戶端所請求獲得的數(shù)據(jù),并返回給客戶端。該過程由服務器直接從緩存系統(tǒng)中讀取緩存數(shù)據(jù),不需要調用開發(fā)語言,縮短了數(shù)據(jù)獲取請求的響應時間,提高了數(shù)據(jù)讀取速率。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1示出了本申請實施例一種緩存數(shù)據(jù)讀取系統(tǒng)的結構示意圖;
圖2示出了本申請實施例一種數(shù)據(jù)讀取方法的流程圖;
圖3示出了本申請實施例一種判斷緩存系統(tǒng)中是否包含數(shù)據(jù)信息對應的數(shù)據(jù)的過程的流程圖;
圖4示出了本申請實施例另一種數(shù)據(jù)讀取方法的流程圖;
圖5示出了本申請實施例一種數(shù)據(jù)讀取裝置的框圖;
圖6示出了本發(fā)明實施例一種判斷單元的框圖;
圖7示出了本申請實施例一種第一查找子單元的框圖;
圖8示出了本申請實施例一種數(shù)據(jù)讀取單元的款圖;
圖9示出了本申請實施例另一種數(shù)據(jù)讀取裝置的框圖。
具體實施方式
傳統(tǒng)的數(shù)據(jù)加載方案,客戶端向服務器發(fā)送數(shù)據(jù)獲取請求,服務器每次接收到數(shù)據(jù)獲取請求后,都需要調用后臺的開發(fā)語言框架。然后,由開發(fā)語言框架判斷緩存系統(tǒng)中是否包含客戶端所要獲取的數(shù)據(jù),開發(fā)語言框架處理請求的過程非常耗時,導致客戶端獲取數(shù)據(jù)的速度非常慢,在高并發(fā)的情況下,重復這樣的流程將造成系統(tǒng)崩潰。為解決該問題,本申請?zhí)峁┮环N數(shù)據(jù)讀取方法,服務器接收到客戶端發(fā)送的數(shù)據(jù)獲取請求后,解析該請求,得到客戶端所要獲得的數(shù)據(jù)對應的數(shù)據(jù)信息,并查找本地存儲的緩存數(shù)據(jù)索引中是否包含該數(shù)據(jù)信息,如果包含,表明緩存系統(tǒng)中存儲有客戶端所要獲得的數(shù)據(jù),此時,服務器直接從緩存系統(tǒng)中讀取客戶端所要獲得的數(shù)據(jù),并返回給客戶端;該方法服務器能夠與緩存系統(tǒng)直接進行通信,無需調用開發(fā)語言框架,因此,縮短了數(shù)據(jù)獲取請求的響應時間,提高了數(shù)據(jù)讀取速率。下面將結合具體的本申請實施例的技術方案進行詳細說明。
請參見圖1,示出了本申請實施例一種緩存數(shù)據(jù)讀取系統(tǒng)的結構示意圖,該系統(tǒng)包括服務器1、緩存2、數(shù)據(jù)庫3;
服務器1接收客戶端發(fā)送的用戶請求(即,讀取數(shù)據(jù)的請求),用戶請求經(jīng)過負載均衡后分配給相對空閑的服務器,然后,服務器判斷緩存系統(tǒng)中是否包含該用戶請求所要獲取的數(shù)據(jù),如果包含,則服務器1直接與緩存2進行通信請求獲取相應的緩存數(shù)據(jù);緩存2向服務器1返回相應的緩存數(shù)據(jù)。緩存2中的數(shù)據(jù)由數(shù)據(jù)庫3定期推送得到。
請參見圖2,示出了本申請實施例一種數(shù)據(jù)讀取方法的流程圖,該方法應用于服務器中,包括以下步驟:
S11,服務器接收客戶端發(fā)送的數(shù)據(jù)獲取請求。
客戶端檢測到用戶的獲取數(shù)據(jù)操作后,產(chǎn)生相應的數(shù)據(jù)獲取請求,并將該數(shù)據(jù)獲取請求發(fā)送給服務器。該數(shù)據(jù)獲取請求攜帶所要獲得的數(shù)據(jù)對應的數(shù)據(jù)信息,該數(shù)據(jù)信息用于使服務器獲得相對應的數(shù)據(jù)并反饋給客戶端。例如,數(shù)據(jù)信息可以是數(shù)據(jù)的標識信息。
例如,獲取數(shù)據(jù)的操作可以是用戶在移動終端安裝的應用程序(Application,APP)上點擊某一控件的動作,此時,APP檢測到該點擊操作后,生成數(shù)據(jù)獲取請求并發(fā)送給服務器。
S12,服務器解析數(shù)據(jù)獲取請求,得到該數(shù)據(jù)獲取請求所要獲得的數(shù)據(jù)對應的數(shù)據(jù)信息。
服務器解析數(shù)據(jù)獲取請求獲得相應的數(shù)據(jù)信息,以便下一步獲取該數(shù)據(jù)信息對應的數(shù)據(jù)。
在本申請一種可能的實現(xiàn)方式中,數(shù)據(jù)獲取請求中包含所要獲得的數(shù)據(jù)對應的參數(shù)信息,為了保證數(shù)據(jù)獲取過程的安全性,需要將客戶端發(fā)送的數(shù)據(jù)獲取請求中的參數(shù)利用加密算法進行加密,得到數(shù)據(jù)信息。傳輸加密后的數(shù)據(jù)信息增加了截獲破解難度,提高了數(shù)據(jù)獲取過程的安全性。其中,可以是采用已有的加密算法,例如,三重數(shù)據(jù)加密算法(Triple Data Encryption Algorithm,TDES)、安全哈希算法(Secure Hash Algorithm,SHA)、消息摘要算法5(Message Digest Algorithm5,MD5)。
例如,客戶端請求讀取影片數(shù)據(jù),對應的接口分別是movie/info,這個接口需要的參數(shù)是"cinemano=1001622&public_signal_short=lxycjntyzx",則服務器利用上述的加密算法對請求中的參數(shù)信息“movie/info”和"cinemano=1001622&public_signal_short=lxycjntyzx"進行加密運算,從而提高安全性。
S13,服務器判斷緩存系統(tǒng)中是否包含數(shù)據(jù)信息所對應的數(shù)據(jù);如果是,則執(zhí)行S14;如果否,則執(zhí)行S15。
本申請?zhí)峁┑膶嵤├?,將服務器與緩存系統(tǒng)的通信機制進行統(tǒng)一,例如,服務器與緩存系統(tǒng)使用相同規(guī)則的通信信令,這樣,服務器與緩存系統(tǒng)能夠直接進行通信。具體的,服務器與緩存系統(tǒng)之間通信機制統(tǒng)一為:POST請求參數(shù)是接口名,POST請求參數(shù)的參數(shù)是接口的參數(shù)。
例如,上述的實例,客戶端請求讀取影片數(shù)據(jù),對應的接口分別是movie/info,這個接口需要的參數(shù)是"cinemano=1001622&public_signal_short=lxycjntyzx",如果一個接口需要多個參數(shù),各個參數(shù)之間用符號“&”分開。本示例中,POST請求參數(shù)是“movie/info”,POST請求參數(shù)的參數(shù)是"cinemano=1001622&public_signal_short=lxycjntyzx"。
服務器與緩存系統(tǒng)能夠直接通信后,在本申請一種可能的實現(xiàn)方式中,服務器可以直接判斷緩存系統(tǒng)中是否包含數(shù)據(jù)信息對應的數(shù)據(jù);
在本申請另一種可能的實現(xiàn)方式中,緩存系統(tǒng)向服務器發(fā)送緩存數(shù)據(jù)索引,服務器存儲該緩存數(shù)據(jù)索引,然后,獲得數(shù)據(jù)信息后判斷緩存數(shù)據(jù)索引中是否包含該數(shù)據(jù)信息。
如圖3所示,判斷緩存系統(tǒng)中是否包含數(shù)據(jù)信息對應的數(shù)據(jù)的過程可以包括以下步驟:
S131,服務器查找緩存數(shù)據(jù)索引中是否包含所述數(shù)據(jù)信息;如果是,則執(zhí)行S132;如果否,則執(zhí)行S133。
如果得到的數(shù)據(jù)信息經(jīng)過加密處理,則此步驟服務器需要先將數(shù)據(jù)信息利用預設的算法轉換得到對應的數(shù)據(jù)索引,再判斷緩存數(shù)據(jù)索引中是否包含該數(shù)據(jù)索引,如果包含,則執(zhí)行S132;如果不包含,則執(zhí)行S133。
S132,服務器確定緩存系統(tǒng)中包含該數(shù)據(jù)信息對應的數(shù)據(jù)。
S133,服務器確定緩存系統(tǒng)中不包含該數(shù)據(jù)信息對應的數(shù)據(jù)。
S14,服務器直接從緩存系統(tǒng)中獲取該數(shù)據(jù)信息對應的緩存數(shù)據(jù)。
如果緩存系統(tǒng)中包含該數(shù)據(jù)信息對應的數(shù)據(jù),則服務器直接與緩存系統(tǒng)進行通信,請求從緩存系統(tǒng)中讀取該數(shù)據(jù)信息對應的緩存數(shù)據(jù)。
服務器根據(jù)該數(shù)據(jù)信息對應的數(shù)據(jù)索引生成緩存數(shù)據(jù)讀取請求發(fā)送給緩存系統(tǒng),緩存系統(tǒng)根據(jù)該數(shù)據(jù)信息獲取相應的緩存數(shù)據(jù)。緩存系統(tǒng)讀取該數(shù)據(jù)索引對應的數(shù)據(jù)并返回給服務器。
S15,服務器調用開發(fā)語言從數(shù)據(jù)庫中讀取該數(shù)據(jù)信息對應的數(shù)據(jù)。
如果緩存系統(tǒng)中不包含該數(shù)據(jù)信息對應的數(shù)據(jù),則需要從數(shù)據(jù)庫中獲取該數(shù)據(jù)信息對應的數(shù)據(jù),從數(shù)據(jù)庫中讀取數(shù)據(jù)需要調用開發(fā)語言,由開發(fā)語言從數(shù)據(jù)庫中讀取該數(shù)據(jù)信息對應的數(shù)據(jù)。
S16,服務器將該數(shù)據(jù)信息對應的數(shù)據(jù)發(fā)送給客戶端。
本實施例提供的數(shù)據(jù)讀取方法,當服務器接收到客戶端發(fā)送的數(shù)據(jù)獲取請求后,服務器解析該數(shù)據(jù)獲取請求,得到客戶端所要獲取的數(shù)據(jù)對應的數(shù)據(jù)信息。服務器查找本地存儲的緩存數(shù)據(jù)索引中是否包含該數(shù)據(jù)信息,如果包含,表明緩存系統(tǒng)中存儲有客戶端所請求獲得的數(shù)據(jù),此時,服務器直接從緩存系統(tǒng)中讀取客戶端所請求獲得的數(shù)據(jù),并返回給客戶端。該過程由服務器直接從緩存系統(tǒng)中讀取緩存數(shù)據(jù),不需要調用開發(fā)語言,縮短了數(shù)據(jù)獲取請求的響應時間,提高了數(shù)據(jù)讀取速率。
請參見圖4,示出了本申請實施例另一種數(shù)據(jù)讀取方法的流程圖,該方法應用于圖1所示的系統(tǒng)中,如圖4所示,該方法包括以下步驟:
S21,客戶端向服務器發(fā)送數(shù)據(jù)獲取請求。
S22,服務器接收到該數(shù)據(jù)獲取請求后,從線程池中調用一個線程對象處理該數(shù)據(jù)獲取請求。
線程池是線程對象池,在內(nèi)存開辟一塊空間,在里面存放眾多(未死亡的)線程對象,當有線程任務時,從線程池中取出一個線程對象執(zhí)行該線程任務,執(zhí)行完線程任務后的線程對象歸池,這樣,能夠避免反復創(chuàng)建線程對象所帶來的性能開銷,節(jié)省了系統(tǒng)資源。
S23,當前線程解析所述數(shù)據(jù)獲取請求,得到相應的數(shù)據(jù)信息;
S24,所述當前線程判斷緩存系統(tǒng)中是否包含數(shù)據(jù)信息對應的數(shù)據(jù);如果是,則執(zhí)行S25;如果否,則執(zhí)行S26。
S25,當前線程直接從緩存系統(tǒng)中獲取該數(shù)據(jù)信息對應的數(shù)據(jù)。
S26,當前線程調用開發(fā)語言從數(shù)據(jù)庫中獲取該數(shù)據(jù)信息對應的數(shù)據(jù)。
S27,在當前線程等待開發(fā)語言返回數(shù)據(jù)過程中,當前線程接收另一個數(shù)據(jù)數(shù)據(jù)獲取請求,并響應該另一個數(shù)據(jù)獲取請求。
當前線程響應該另一個數(shù)據(jù)獲取請求的過程與S23~S28的過程相同,此處不再贅述。
S28,當前線程將獲得的數(shù)據(jù)發(fā)送給客戶端。
S29,當服務器接收到下一個數(shù)據(jù)獲取請求時,從線程池中調用任意一個線程對象處理接收到的下一個數(shù)據(jù)獲取請求。
下一個數(shù)據(jù)獲取請求可能在S23~S28之間的任意一個時間點接收到,因此,S29的執(zhí)行時間可能在S23~S28任意一個步驟之前或之后。
線程對象處理所述下一個數(shù)據(jù)獲取請求的過程與上述S23~S28的過程相同,此處不再贅述。
本實施例提供的數(shù)據(jù)讀取方法,服務器與緩存系統(tǒng)能夠直接通信,這樣,服務器能夠直接從緩存系統(tǒng)中讀取相應的緩存數(shù)據(jù),不必調用開發(fā)語言,因此,縮短了請求響應時間,提高了緩存數(shù)據(jù)讀取速率。而且,服務器開啟線程池,當接收到數(shù)據(jù)獲取請求后直接從線程池中調用線程對象來執(zhí)行相應的任務,避免反復創(chuàng)建線程對象,節(jié)省了系統(tǒng)資源,同時,也提高了系統(tǒng)處理請求的吞吐量。此外,對于每一個線程對象,在等待開發(fā)語言從數(shù)據(jù)庫中讀取數(shù)據(jù)的過程中,可以接收下一個數(shù)據(jù)獲取請求,進一步縮短了請求響應時間,提高了數(shù)據(jù)讀取速率。
對于前述的各方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領域技術人員應該知悉,本發(fā)明并不受所描述的動作順序的限制,因為依據(jù)本發(fā)明,某些步驟可以采用其他順序或者同時進行。其次,本領域技術人員也應該知悉,說明書中所描述的實施例均屬于優(yōu)選實施例,所涉及的動作和模塊并不一定是本發(fā)明所必須的。
相應于上述的數(shù)據(jù)讀取方法實施例,本申請還提供了數(shù)據(jù)讀取裝置實施例。
請參見圖5,示出了本申請實施例一種數(shù)據(jù)讀取裝置的框圖,該裝置應用于服務器中,該裝置包括:接收單元110、解析單元120、判斷單元130和數(shù)據(jù)讀取單元140。
接收單元110,用于接收數(shù)據(jù)獲取請求。
客戶端向服務器發(fā)送數(shù)據(jù)獲取請求,服務器通過接收單元接收該數(shù)據(jù)獲取請求。
解析單元120,用于解析數(shù)據(jù)獲取請求,得到數(shù)據(jù)獲取請求所請求獲得的數(shù)據(jù)對應的數(shù)據(jù)信息。
服務器中的解析單元解析數(shù)據(jù)獲取請求獲得相應的數(shù)據(jù)信息,以便下一步獲取該數(shù)據(jù)信息對應的數(shù)據(jù)。
在本申請一種可能的實現(xiàn)方式中,數(shù)據(jù)獲取請求中包含所要獲得的數(shù)據(jù)對應的參數(shù)信息,為了保證數(shù)據(jù)獲取過程的安全性,需要將客戶端發(fā)送的數(shù)據(jù)獲取請求中的參數(shù)利用加密算法進行加密,得到數(shù)據(jù)信息。傳輸加密后的數(shù)據(jù)信息增加了截獲破解難度,提高了數(shù)據(jù)獲取過程的安全性。其中,可以是采用已有的加密算法,此處不再詳述。
判斷單元130,用于判斷緩存系統(tǒng)中是否包含數(shù)據(jù)信息對應的數(shù)據(jù)。
在本申請實施例中,將將服務器與緩存系統(tǒng)的通信機制進行統(tǒng)一,例如,服務器與緩存系統(tǒng)使用相同規(guī)則的通信信令,這樣,服務器與緩存系統(tǒng)能夠直接進行通信,服務器可以直接判斷緩存系統(tǒng)中是否包含所要獲取的數(shù)據(jù),如果存在則直接讀取該數(shù)據(jù)。
在本申請一種可能的實現(xiàn)方式中,所述服務器中存儲有緩存數(shù)據(jù)索引,該緩存數(shù)據(jù)索引從所述緩存系統(tǒng)中獲得,然后,服務器判斷緩存數(shù)據(jù)索引中是否包含數(shù)據(jù)信息,若包含,則確定緩存系統(tǒng)中包含所要讀取的數(shù)據(jù);如果不包含,則確定緩存系統(tǒng)中不包含所要讀取的數(shù)據(jù)。
如圖6所示,判斷單元130可以包括第一查找子單元131、第一確定子單元132和第二確定子單元133。
第一查找子單元131,用于查找緩存數(shù)據(jù)索引中是否包含該數(shù)據(jù)信息;第一確定子單元132,用于當緩存數(shù)據(jù)索引中包含所述數(shù)據(jù)信息時,確定緩存系統(tǒng)中包含該數(shù)據(jù)信息對應的數(shù)據(jù);第二確定子單元133,用于當緩存數(shù)據(jù)索引中不包含數(shù)據(jù)信息時,確定緩存系統(tǒng)中不包含數(shù)據(jù)信息對應的數(shù)據(jù)。
在本申請一種可能的實現(xiàn)方式中,如圖7所示,第一查找子單元131可以包括:數(shù)據(jù)轉換子單元1311,用于將所述數(shù)據(jù)信息轉換得到數(shù)據(jù)索引;第二查找子單元1312,用于查找緩存數(shù)據(jù)索引中是否包含該數(shù)據(jù)索引;第三確定子單元1313,用于當所述緩存數(shù)據(jù)索引中包含數(shù)據(jù)索引時,確定緩存數(shù)據(jù)索引中包含所述數(shù)據(jù)信息;第四確定子單元1314,用于當所述緩存數(shù)據(jù)索引中不包含所述數(shù)據(jù)索引時,確定所述緩存數(shù)據(jù)索引中不包含所述數(shù)據(jù)信息。
數(shù)據(jù)讀取單元140,用于當所述緩存系統(tǒng)中包含數(shù)據(jù)信息對應的數(shù)據(jù)時,直接從緩存系統(tǒng)中獲取數(shù)據(jù)信息對應的緩存數(shù)據(jù)。
在本申請一種可能的實現(xiàn)方式中,根據(jù)數(shù)據(jù)信息生成緩存數(shù)據(jù)讀取請求并發(fā)送給緩存系統(tǒng),如圖8所示,該數(shù)據(jù)讀取單元140,包括:
生成子單元141,用于當確定緩存數(shù)據(jù)索引中包含該數(shù)據(jù)信息時,根據(jù)數(shù)據(jù)信息轉換得到的數(shù)據(jù)索引生成緩存數(shù)據(jù)讀取請求;
其中,該緩存數(shù)據(jù)讀取請求的POST請求參數(shù)是接口名,所述POST請求參數(shù)的參數(shù)是所述接口名對應接口的參數(shù)。
發(fā)送子單元142,用于將緩存數(shù)據(jù)讀取請求發(fā)送給緩存系統(tǒng),以使緩存系統(tǒng)響應所述緩存數(shù)據(jù)讀取請求;
接收子單元143,用于接收所述緩存系統(tǒng)返回的所述數(shù)據(jù)信息對應的緩存數(shù)據(jù)。
在本申請另一種可能的實現(xiàn)方式中,服務器內(nèi)設置有常駐內(nèi)存的線程池,線程池內(nèi)包含多個線程對象,當接收到數(shù)據(jù)獲取請求時,調用所述線程池中的任意一個線程對象依次執(zhí)行所述接收單元、解析單元、判斷單元和數(shù)據(jù)讀取單元的動作。這樣,能夠避免反復創(chuàng)建線程對象所帶來的性能開銷,節(jié)省了系統(tǒng)資源。
本實施例提供的數(shù)據(jù)讀取裝置服務器接收到客戶端發(fā)送的數(shù)據(jù)獲取請求后,服務器解析該數(shù)據(jù)獲取請求,得到客戶端所要獲取的數(shù)據(jù)對應的數(shù)據(jù)信息。服務器查找本地存儲的緩存數(shù)據(jù)索引中是否包含該數(shù)據(jù)信息,如果包含,表明緩存系統(tǒng)中存儲有客戶端所請求獲得的數(shù)據(jù),此時,服務器直接從緩存系統(tǒng)中讀取客戶端所請求獲得的數(shù)據(jù),并返回給客戶端。該過程由服務器直接從緩存系統(tǒng)中讀取緩存數(shù)據(jù),不需要調用開發(fā)語言,縮短了數(shù)據(jù)獲取請求的響應時間,提高了數(shù)據(jù)讀取速率。而且,服務器開啟線程池,當接收到數(shù)據(jù)獲取請求后直接從線程池中調用線程對象來執(zhí)行相應的任務,避免反復創(chuàng)建線程對象,節(jié)省了系統(tǒng)資源,同時,也提高了系統(tǒng)處理請求的吞吐量。
請參見圖9,示出了本申請實施例另一種數(shù)據(jù)讀取裝置的框圖,本實施例在圖5所示實施例的基礎上還包括調用單元210。
調用單元210,用于當緩存系統(tǒng)中不包含所述數(shù)據(jù)信息對應的數(shù)據(jù)時,調用開發(fā)語言從數(shù)據(jù)庫中獲取所述數(shù)據(jù)信息對應的數(shù)據(jù);
如果判斷單元130確定緩存系統(tǒng)中不包含數(shù)據(jù)信息對應的數(shù)據(jù),則調用開發(fā)語言從數(shù)據(jù)庫中讀取該數(shù)據(jù)信息對應的數(shù)據(jù)并返回給客戶端。
當前線程在調用開發(fā)語言從數(shù)據(jù)庫中獲取所述目標數(shù)據(jù)的同時,通過所述接收單元接收下一個數(shù)據(jù)獲取請求,并響應所述下一個數(shù)據(jù)獲取請求,進一步縮短了請求響應時間,提高了數(shù)據(jù)讀取速率。
本實施例提供的數(shù)據(jù)獲取裝置,在當前線程調用開發(fā)語言讀取數(shù)據(jù)庫中的數(shù)據(jù)時,接收下一個數(shù)據(jù)獲取請求,從而縮短了該下一個數(shù)據(jù)獲取請求的響應時間,提高了數(shù)據(jù)讀取速率。
需要說明的是,本說明書中的各個實施例均采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。對于裝置類實施例而言,由于其與方法實施例基本相似,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。
最后,還需要說明的是,在本文中,諸如第一和第二等之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設備中還存在另外的相同要素。
對所公開的實施例的上述說明,使本領域技術人員能夠實現(xiàn)或使用本發(fā)明。對這些實施例的多種修改對本領域技術人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實施例中實現(xiàn)。因此,本發(fā)明將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。
以上所述僅是本發(fā)明的優(yōu)選實施方式,應當指出,對于本技術領域的普通技術人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應視為本發(fā)明的保護范圍。