一種基于Redis數(shù)據(jù)庫的數(shù)據(jù)統(tǒng)計系統(tǒng)及其統(tǒng)計方法
【技術(shù)領(lǐng)域】
[000? ]本申請涉及計算機數(shù)據(jù)統(tǒng)計領(lǐng)域,具體的,涉及一種基于Redis數(shù)據(jù)庫的能夠進行快速部署的數(shù)據(jù)統(tǒng)計系統(tǒng)及其統(tǒng)計方法。
【背景技術(shù)】
[0002]隨著互聯(lián)網(wǎng)業(yè)務(wù)高速發(fā)展,業(yè)務(wù)產(chǎn)品更新速度越來越快,而每次更新伴隨著一些相關(guān)的業(yè)務(wù)數(shù)據(jù)統(tǒng)計。
[0003]數(shù)據(jù)統(tǒng)計分析是指用適當(dāng)?shù)慕y(tǒng)計分析方法對收集來的大量數(shù)據(jù)進行分析,提取有用信息和形成結(jié)論而對數(shù)據(jù)加以詳細(xì)研究和概括總結(jié)的過程。這一過程也是質(zhì)量管理體系的支持過程。在實用中,數(shù)據(jù)分析可幫助人們作出判斷,以便采取適當(dāng)行動。數(shù)據(jù)分析廣泛應(yīng)用于計算機系統(tǒng)中,如用戶量、訪問量、用戶活躍等。
[0004]現(xiàn)在的數(shù)據(jù)統(tǒng)計方法,一般是把大量數(shù)據(jù)存儲到數(shù)據(jù)庫中去,而且需要針對業(yè)務(wù)特性進行數(shù)據(jù)庫設(shè)計,然后再通過需求把數(shù)據(jù)從數(shù)據(jù)庫中統(tǒng)計出來。例如,通過hadoop等進行數(shù)據(jù)統(tǒng)計存儲。上述方式實現(xiàn)和部署復(fù)雜慢,適用一些需要長期分析的數(shù)據(jù),但不適用于輕量,部署要求快、實時的數(shù)據(jù)統(tǒng)計需求。相比之下,互聯(lián)網(wǎng)上更需要一些能夠簡單,快速滿足需求的統(tǒng)計系統(tǒng),以便用于用戶日活躍度、單獨用戶訪問量、日訪問量等數(shù)據(jù)的統(tǒng)計。
[0005]因此,如何能夠?qū)崿F(xiàn)一種部署簡單,適用于一些實時統(tǒng)計,或者日統(tǒng)計量等數(shù)據(jù)統(tǒng)計,成為現(xiàn)有技術(shù)亟需解決的技術(shù)問題。
【發(fā)明內(nèi)容】
[0006]本發(fā)明的目的在于提出一種快速部署的基于Redis數(shù)據(jù)庫的數(shù)據(jù)統(tǒng)計系統(tǒng)及其統(tǒng)計方法,能夠滿足輕量級的統(tǒng)計需求,有效提高了開發(fā)業(yè)務(wù)中頻繁短期的數(shù)據(jù)統(tǒng)計需求的實現(xiàn)速度。
[0007]為達此目的,本發(fā)明采用以下技術(shù)方案:
[0008]一種基于Redis數(shù)據(jù)庫的數(shù)據(jù)統(tǒng)計系統(tǒng),包括:
[0009]Redis服務(wù)器,用于利用Redis服務(wù)進行Key(鍵)_Value(值)緩存和存儲;
[0010]系統(tǒng)服務(wù)器,所述系統(tǒng)服務(wù)器具有統(tǒng)計服務(wù),統(tǒng)計接口和查詢接口,所述系統(tǒng)服務(wù)器連接到Redi s服務(wù)器上,并通過統(tǒng)計接口和查詢接口與業(yè)務(wù)應(yīng)用進行通信,所述業(yè)務(wù)應(yīng)用具有統(tǒng)計請求服務(wù),所述統(tǒng)計接口(Count Interface)用于接收所述統(tǒng)計請求服務(wù)發(fā)送的業(yè)務(wù)統(tǒng)計請求,所述查詢接口(Query Interface)用于接收所述統(tǒng)計請求服務(wù)的查詢,并返回統(tǒng)計數(shù)據(jù),所述統(tǒng)計服務(wù)用于接收到所述業(yè)務(wù)統(tǒng)計請求后,利用所述Redis服務(wù)進行統(tǒng)計計算。
[0011]優(yōu)選地所述系統(tǒng)服務(wù)器為Tomcat服務(wù)器,所述Tomcat服務(wù)器通過Jedis連接池連接到已經(jīng)部署好的Redis服務(wù)器2。
[0012]優(yōu)選地所述統(tǒng)計服務(wù)請求通過Ajax以異步http的方式發(fā)送業(yè)務(wù)統(tǒng)計請求,通過Aj ax以異步http的方式向查詢接口查詢統(tǒng)計數(shù)據(jù),所述統(tǒng)計服務(wù)以Json格式返回各類統(tǒng)計數(shù)據(jù)。
[0013]一種基于Redis數(shù)據(jù)庫的數(shù)據(jù)統(tǒng)計方法,包括如下步驟:
[0014]步驟1:將系統(tǒng)服務(wù)器連接到已經(jīng)部署好的Redis服務(wù)器,所述Redis服務(wù)器進行Key (鍵)-Value (值)緩存和存儲;
[0015]步驟2:在所述系統(tǒng)服務(wù)器上部署統(tǒng)計服務(wù)(Count Service),并啟動所述統(tǒng)計服務(wù);
[0016]步驟3:在業(yè)務(wù)應(yīng)用中集成用于實時業(yè)務(wù)數(shù)據(jù)統(tǒng)計的統(tǒng)計請求服務(wù),并調(diào)用所述統(tǒng)計請求服務(wù);
[0017]步驟4:所述統(tǒng)計請求服務(wù)通過所述系統(tǒng)服務(wù)器的統(tǒng)計接口(Count Interface)發(fā)送業(yè)務(wù)統(tǒng)計請求;
[0018]步驟5:所述統(tǒng)計服務(wù)接收到所述業(yè)務(wù)統(tǒng)計請求后,利用所述Redis服務(wù)器進行統(tǒng)計計算;
[0019]步驟6:統(tǒng)計服務(wù)按Redis服務(wù)器中所存儲的key進行匯總,得到并保存各類統(tǒng)計數(shù)據(jù);
[°02°] 步驟7:所述統(tǒng)計請求服務(wù)通過所述系統(tǒng)服務(wù)器的查詢接口(Query Interface)查詢相應(yīng)統(tǒng)計數(shù)據(jù),并返回統(tǒng)計數(shù)據(jù)。
[0021]優(yōu)選地,在步驟5中,所述統(tǒng)計計算為:根據(jù)所述業(yè)務(wù)統(tǒng)計請求在Redis服務(wù)器中生成統(tǒng)計key(鍵),判斷此統(tǒng)計key(鍵)是否存在,如果存在則對原key對應(yīng)的Value(值)進行數(shù)量自增,如果不存在則新增統(tǒng)計key。
[0022]優(yōu)選地,所述系統(tǒng)服務(wù)器為Tomcat服務(wù)器,所述Tomcat服務(wù)器通過Jedis連接池連接到已經(jīng)部署好的Redis服務(wù)器。
[0023]優(yōu)選地,在所述步驟4中,所述統(tǒng)計服務(wù)請求以異步http的方式發(fā)送業(yè)務(wù)統(tǒng)計請求。
[0024]優(yōu)選地,在所述步驟7所述統(tǒng)計服務(wù)請求以異步http的方式向查詢接口查詢統(tǒng)計數(shù)據(jù);所述統(tǒng)計服務(wù)以Json格式返回各類統(tǒng)計數(shù)據(jù)。
[0025]優(yōu)選地,所述業(yè)務(wù)應(yīng)用為web業(yè)務(wù)應(yīng)用。
[0026]優(yōu)選地,在所述步驟6和步驟7中,按一定周期生成key,并按該周期進行匯總。優(yōu)選地,該周期可以是一天。
[0027]優(yōu)選地,所述統(tǒng)計數(shù)據(jù)包括每天實時用戶訪問記錄、每天獨立用戶訪問數(shù)據(jù)、用戶日活躍度、日訪問量、單獨用戶訪問量中的任意一種或任意組合。
[0028]本發(fā)明通過快速部署Redis服務(wù)器,迅速實現(xiàn)實時輕量級用戶數(shù)據(jù)統(tǒng)計,然后通過Java進行對統(tǒng)計方法封裝,提供JavaScipt API通過HTTP通訊協(xié)議實現(xiàn)實時統(tǒng)計不同需求下的數(shù)據(jù)統(tǒng)計,有效提高了開發(fā)業(yè)務(wù)中頻繁短期的數(shù)據(jù)統(tǒng)計需求的實現(xiàn)速度。
【附圖說明】
[0029]圖1是根據(jù)本發(fā)明的基于Redis數(shù)據(jù)庫的數(shù)據(jù)統(tǒng)計系統(tǒng)的構(gòu)架圖;
[0030]圖2是根據(jù)本發(fā)明的基于Redis數(shù)據(jù)庫的數(shù)據(jù)統(tǒng)計方法的流程圖;
[0031 ]圖3是根據(jù)本發(fā)明的基于Redis數(shù)據(jù)庫的數(shù)據(jù)統(tǒng)計方法的統(tǒng)計策略流程圖。
[0032]圖中的附圖標(biāo)記所分別指代的技術(shù)特征為:
[0033]1、系統(tǒng)服務(wù)器;2、Redis服務(wù)器;3、連接;4、統(tǒng)計服務(wù);5、業(yè)務(wù)應(yīng)用;6、統(tǒng)計請求服務(wù);7、統(tǒng)計接口;8、查詢接口。
【具體實施方式】
[0034]下面結(jié)合附圖和實施例對本發(fā)明作進一步的詳細(xì)說明??梢岳斫獾氖?,此處所描述的具體實施例僅僅用于解釋本發(fā)明,而非對本發(fā)明的限定。另外還需要說明的是,為了便于描述,附圖中僅示出了與本發(fā)明相關(guān)的部分而非全部結(jié)構(gòu)。
[0035]Redis是一個開源的,BSD許可的,高級的“鍵-值”,即“key-value”的緩存與存儲。它經(jīng)常被稱為是一個數(shù)據(jù)結(jié)構(gòu)服務(wù)器,其鍵可以字符串、哈希表、列表、集合、有序集合、位圖和hyperloglogs。由于Redis是一個開源的Key-Value緩存和存儲,部署極為簡單,然后通過Java等算法對統(tǒng)計方法進行封裝,提供JavaScipt API通過HTTP等的通訊協(xié)議實現(xiàn)實時統(tǒng)計不同需求下的數(shù)據(jù)統(tǒng)計。
[0036]本發(fā)明通過使用Redis服務(wù)器,采用key進行統(tǒng)計,實現(xiàn)了快速部署,且能夠?qū)崿F(xiàn)對實時統(tǒng)計用戶日活躍度、單獨用戶訪問量、日訪問量等數(shù)據(jù)統(tǒng)計工作。
[0037]參見圖1,示出了本發(fā)明的基于Redis數(shù)據(jù)庫的數(shù)據(jù)統(tǒng)計系統(tǒng)的構(gòu)架圖,該數(shù)據(jù)統(tǒng)計系統(tǒng)包括:
[0038]Redis服務(wù)器2,用于利用Redis服務(wù)器進行Key(鍵)-Value(值)緩存和存儲;
[0039]系統(tǒng)服務(wù)器I,所述系統(tǒng)服務(wù)器具有統(tǒng)計服務(wù)4,統(tǒng)計接口7和查詢接口 8,所述系統(tǒng)服務(wù)器7連接到Redi s服務(wù)器2上,并通過統(tǒng)計接口 7和查詢接口 8與業(yè)務(wù)應(yīng)用5進行通信,所述業(yè)務(wù)應(yīng)用5具有統(tǒng)計請求服務(wù)6,所述統(tǒng)計接口7(Count Interface)用于接收所述統(tǒng)計請求服務(wù)6發(fā)送的業(yè)務(wù)統(tǒng)計請求,所述查詢接口8(Query Interface)用于接收所述統(tǒng)計請求服務(wù)6的查詢,并返回統(tǒng)計數(shù)據(jù),所述統(tǒng)計服務(wù)4用于接收到所述業(yè)務(wù)統(tǒng)計請求后,利用所述Redis服務(wù)器進行統(tǒng)計計算。
[0040]優(yōu)選地,所述系統(tǒng)服務(wù)器為Tomcat服務(wù)器,所述Tomcat服務(wù)器通過Jedis連接池連接到已經(jīng)部署好的Redis服務(wù)器2。
[0041 ] 進一步優(yōu)選地,所述統(tǒng)計服務(wù)請求通過例如Ajax以異步http的方式發(fā)送業(yè)務(wù)統(tǒng)計請求,通過例如Ajax以異步http的方式向查詢接口查詢統(tǒng)計數(shù)據(jù)。所述統(tǒng)計服務(wù)以