首頁 >資料庫 >Redis >redis中的關係查詢介紹

redis中的關係查詢介紹

尚
轉載
2020-04-18 09:05:202480瀏覽

redis中的關係查詢介紹

本文對Redis如何保存關係型數據,以及如何對其匹配、範圍、模糊查詢進行舉例講解。

1、關係型資料的儲存

以Staff物件為例,在關係型資料庫或類似GridGain的記憶體網格產品中(底層使用H2資料庫的記憶體模式儲存),我們以表格形式保存物件的資料。因為記憶體網格是基於物件做快取的,所以還要額外多出一列(Staff列)保存整個物件的編碼,例如序列化後的二進位或JSON格式等,便於直接傳回給應用後進行反序列化。

而在Redis中,我們可以用id作為唯一標識,使用key-value、hash、zSet三種資料結構來保存。 Key-value是為了保存id和整個對象,確定id範圍後可依它將物件傳回客戶端。

redis中的關係查詢介紹

2、符合查詢

利用hash表的hget或hmget可以實作dept='IT'或dept in ('IT', 'QA' )這種單值或多值的完全符合查詢。拿到id列表後,再去查詢key-value取得到物件。

3、範圍查詢

因為我們將age儲存成zSet的score,value是id,所以可以利用zSet的zrangeByScore方法來獲得score在某一區間範圍內的value值。

4、模糊查詢

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

5、分頁查詢

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

6、限制

上述舉例說明了幾種常見查詢在Redis的實作方式,但是Redis畢竟只是key-value存儲,所以有很多限制。

例如:

1)無法實現多條件組合的查詢,例如age>25 AND name like 'A%',硬要實現的話需要多條命令併計算並集或交集。

2)模糊查詢中文比較費勁。

更多redis知識請關注redis入門教學欄位。

以上是redis中的關係查詢介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除