小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Redis中的關(guān)系查詢

 WindySky 2016-02-18

本文對Redis如何保存關(guān)系型數(shù)據(jù),以及如何對其匹配、范圍、模糊查詢進行舉例講解,其中模糊查詢功能基于最新的2.8.9以后版本。

關(guān)系型數(shù)據(jù)的存儲

Staff對象為例,在關(guān)系型數(shù)據(jù)庫或類似GridGain的內(nèi)存網(wǎng)格產(chǎn)品中(底層使用H2數(shù)據(jù)庫的內(nèi)存模式存儲),我們以表形式保存對象的數(shù)據(jù)。因為內(nèi)存網(wǎng)格是基于對象做緩存的,所以還要額外多出一列(Staff)保存整個對象的編碼,例如序列化后的二進制或者JSON格式等,便于直接返回給應用后進行反序列化。而在Redis中,我們可以用id作為唯一標識,使用key-value、hashzSet三種數(shù)據(jù)結(jié)構(gòu)進行保存。Key-value是為了保存id和整個對象,確定id范圍后可根據(jù)它將對象返回給客戶端,而選擇其他兩種數(shù)據(jù)結(jié)構(gòu)的具體原因后面再說。


匹配查詢

利用hash表的hgethmget可以實現(xiàn)dept='IT'或者dept in ('IT', 'QA')這種單值或多值的完全匹配查詢。拿到id列表后,再去查詢key-value獲得到對象。

范圍查詢

因為我們將age保存成zSetscore,valueid,所以可以利用zSetzrangeByScore方法獲得score在某一區(qū)間范圍內(nèi)的value值。

模糊查詢

Redis 2.8.9zSet加入了一個非常有用的方法zrangeByLex,我們將score都保存為0,value是姓名:id的格式,利用zrangeByLex可以獲得字母在某一區(qū)間內(nèi)的value值。例如,zrangeByLex name [A, (F,可以查詢出Allen, Aaron, Carter。

分頁查詢

同時,zrangeByLex還支持分頁查詢,語法類似limit start, offset。

局限性

上述舉例說明了幾種常見查詢在Redis的實現(xiàn)方式,但是Redis畢竟只是key-value存儲,所以有很多局限性。例如,1)無法實現(xiàn)多條件組合的查詢,例如age>25 AND name like 'A%',硬要實現(xiàn)的話需要多條命令并計算并集或交集。2)模糊查詢中文比較費勁:


 

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多