Redis 不僅僅是鍵值資料函式庫,透過 RediSearch 和 RedisGraph 模組,更能有效支援全文搜尋和圖形資料處理。RediSearch 提供更快速的全文搜尋和聚合查詢,適用於電商商品搜尋、日誌分析等需要高效率搜尋的場景。RedisGraph 則以其記憶體高效能和 Cypher 查詢語言的支援,簡化了圖形資料的處理,在社交網路分析、推薦系統和詐欺偵測等領域展現其優勢。這兩個模組的整合,讓 Redis 成為處理多元資料結構和複雜查詢的理想選擇,大幅提升應用程式效能。

Redis 搜尋與圖形資料函式庫應用實務

Redis 不僅是一款高效能的鍵值資料函式庫,其擴充模組如 RediSearch 和 RedisGraph 更為資料搜尋與圖形資料處理提供了強大的支援。本文將探討 RediSearch 在搜尋相關應用中的優勢,並介紹 RedisGraph 在處理圖形資料時的獨特之處。

RediSearch:高效搜尋的利器

RediSearch 是 Redis 的一個擴充模組,專為提供高效的全文搜尋、聚合查詢等功能而設計。相較於傳統的搜尋引擎,RediSearch 具備更快的搜尋速度和更高的準確性,使其成為處理大量資料搜尋需求的理想選擇。

RediSearch 的應用場景

  1. 電子商務搜尋:在電子商務平台中,使用者需要快速找到相關商品。RediSearch 可以對商品資訊進行索引,支援多欄位搜尋、篩選和排序,大幅提升搜尋體驗。

  2. 次級搜尋:許多組織每天產生大量資料,需要對這些資料進行高效的搜尋和分析。RediSearch 可以根據檔案中的元資料(如檔案 ID、標題、日期範圍等)進行搜尋,為檔案管理提供了便捷的解決方案。

  3. 商業分析和經營指標:成功的企業需要及時做出正確的決策,而這需要強大的資料分析和搜尋能力。RediSearch 可以提供不同資料指標和商業資料,幫助企業更好地進行業務決策。

  4. 客戶 360 度檢視:企業需要圍繞客戶提供更好的服務,從提供更好的搜尋結果到主動推薦相關內容。RediSearch 可以幫助企業構建客戶 360 度檢視,提升客戶滿意度和忠誠度。

RediSearch 指令範例:訂單歷史查詢

FT.CREATE OrderHistoryIndex SCHEMA id NUMERIC SORTABLE customerName TEXT customerCountry TEXT SORTABLE productName TEXT SORTABLE productPrice NUMERIC SORTABLE purchaseDateTime TEXT SORTABLE productDepartment TEXT SORTABLE purchaseLocation GEO longitude NUMERIC NOINDEX latitude NUMERIC NOINDEX

查詢範例

// 簡單搜尋 - 在所有欄位中搜尋關鍵字
FT.SEARCH OrderHistoryIndex "India"

// 簡單搜尋 - 使用篩選條件並排序
FT.SEARCH OrderHistoryIndex "@customerCountry:canada & @productName:handmade" SORTBY productName DESC LIMIT 0 20

// 簡單搜尋 - 地理位置篩選
FT.SEARCH OrderHistoryIndex "*" geofilter purchaseLocation 72.8258 18.975 100 km

// 簡單搜尋 - 分組統計
FT.AGGREGATE OrderHistoryIndex "*" GROUPBY 1 @customerCountry REDUCE COUNT 0 AS ordersByCountry SORTBY 2 @ordersByCountry DESC MAX 10 LIMIT 0 10

內容解密:

  • FT.CREATE 用於建立索引,定義了多個欄位及其屬性,如 SORTABLE 表示該欄位可被排序。
  • FT.SEARCH 用於執行搜尋查詢,可以使用多種篩選條件、排序和分頁功能。
  • FT.AGGREGATE 用於執行聚合查詢,如分組統計,可以對資料進行深入分析。

RedisGraph:圖形資料函式庫的新星

RedisGraph 是另一個強大的 Redis 擴充模組,用於處理圖形資料。相較於傳統的圖形資料函式庫,RedisGraph 具備記憶體高效能、查詢速度快等優勢,使其在社交網路分析、詐欺偵測等領域有著廣泛的應用前景。

RedisGraph 的特點

  1. 記憶體高效能:RedisGraph 將圖形資料儲存在記憶體中,大幅提升了查詢效能。

  2. 稀疏鄰接矩陣儲存:與其他圖形資料函式庫不同,RedisGraph 使用稀疏鄰接矩陣儲存圖形資料,只有當節點之間存在真實關聯時才會儲存對應的矩陣項,這使得其在儲存和查詢效率上具有明顯優勢。

  3. Cypher 查詢語言:RedisGraph 支援 Cypher 查詢語言,使得複雜的圖形查詢變得更加簡單和直觀。

RedisGraph 的應用場景

  1. 社交網路分析:在社交網路中,使用者之間的關係可以用圖形資料結構來表示。RedisGraph 可以高效地處理好友推薦、社群發現等任務。

  2. 即時推薦系統:根據使用者的行為和偏好,RedisGraph 可以實時生成推薦結果。

  3. 詐欺偵測:透過分析交易和使用者之間的關係,RedisGraph 可以幫助偵測潛在的詐欺行為。

使用 RedisGraph 建立社交圖譜範例

// 建立節點
CREATE (:Person {name:'Chinmay Kulkarni'})
CREATE (:Person {name:'Suyog Kale'})
CREATE (:Person {name:'Atharva Kulkarni'})
CREATE (:Person {name:'Tejas'})
CREATE (:Person {name:'Kimaya'})
CREATE (:Person {name:'Prasad'})

// 建立關係
MATCH (a:Person), (b:Person) WHERE a.name='Chinmay Kulkarni' AND b.name='Suyog Kale' CREATE (a)-[r:Follow]->(b) RETURN type(r);

// 查詢好友推薦
MATCH (a:Person)-[r1:Follow]->(b:Person)-[r2:Follow]->(c:Person) WHERE a.name="Chinmay Kulkarni" RETURN a, r1, b, r2, c

圖表翻譯:

此 Cypher 查詢首先建立了多個使用者節點,然後在這些節點之間建立了「Follow」的關係,最後查詢了 Chinmay Kulkarni 的好友推薦。

Redis在圖資料函式庫應用中的優勢

Redis不僅在傳統的鍵值對儲存上有出色的表現,在圖資料函式庫的應用上也展現了其強大的能力。透過RedisGraph模組,開發者可以輕鬆地處理複雜的圖資料結構,並利用Cypher查詢語言進行高效的資料檢索。

社群媒體圖譜分析

在社群媒體分析中,圖資料函式庫的應用變得越來越重要。假設我們需要為使用者推薦新的朋友,可以透過分析使用者的關注關係來實作。

圖資料模型建立

首先,我們需要建立一個圖資料模型,其中節點代表使用者,邊代表使用者之間的關注關係。

// 建立節點
CREATE (a:Person {name: "Chinmay Kulkarni"})
CREATE (b:Person {name: "Friend1"})
CREATE (c:Person {name: "Friend2"})
CREATE (d:Person {name: "SuggestedFriend"})

// 建立關係
CREATE (a)-[:Follow]->(b)
CREATE (b)-[:Follow]->(c)
CREATE (b)-[:Follow]->(d)

查詢好友的關注物件

接下來,我們可以使用Cypher查詢語言來找出使用者「Chinmay Kulkarni」的好友所關注的人,這些人可以作為朋友推薦的候選人。

MATCH (a:Person)-[r1:Follow]->(b:Person)-[r2:Follow]->(c:Person)
WHERE a.name = "Chinmay Kulkarni"
RETURN c.name

內容解密:

此查詢陳述式首先匹配名稱為「Chinmay Kulkarni」的使用者(a),然後找到他關注的人(b),最後找到(b)所關注的人(c)。透過這種方式,我們可以獲得一組潛在的朋友推薦名單。

RedisTimeSeries在資料分析中的應用

隨著物聯網(IoT)裝置和各種感測器的普及,時間序列資料的處理變得越來越重要。RedisTimeSeries模組為處理時間序列資料提供了高效的解決方案。

時間序列資料特點

時間序列資料具有以下特點:

  1. 罕有變更:大多數操作是插入(INSERT)操作。
  2. 高吞吐量:隨著系統擴充套件,時間序列資料的產生速率指數級增長。
  3. 儲存最佳化:時間序列資料在儲存方式上有最佳化的潛力。
  4. 時效性:較舊的資料功能價值降低,通常只需要讀取最近的資料。

智慧家居溫度調控例項

在智慧家居系統中,我們可以使用RedisTimeSeries來記錄和查詢各房間的溫度變化。

# 建立時間序列
TS.CREATE smarthomes:2:32 LABELS property_id 2 room_id 32
TS.CREATE smarthomes:1:11 LABELS property_id 1 room_id 11
TS.CREATE smarthomes:3:22 LABELS property_id 3 room_id 22

# 新增溫度資料
TS.ADD smarthomes:3:22 * 31
TS.ADD smarthomes:1:11 * 38
TS.ADD smarthomes:2:32 * 32
TS.ADD smarthomes:1:11 * 32
TS.ADD smarthomes:3:22 * 34
TS.ADD smarthomes:2:32 * 27
TS.ADD smarthomes:1:11 * 29
TS.ADD smarthomes:3:22 * 29

內容解密:

使用TS.CREATE命令建立時間序列鍵,並使用LABELS為其新增屬性和房間ID標籤。然後,使用TS.ADD命令新增溫度資料,其中*代表使用伺服器當前時間戳作為資料的時間戳。

RedisAI在AI模型佈署中的優勢

RedisAI模組為AI模型的佈署提供了高效且可擴充套件的解決方案。它支援多種深度學習框架,如TensorFlow、PyTorch和ONNXRuntime。

RedisAI內部架構

RedisAI的內部架構設計使其能夠充分利用Redis的生產級基礎設施,並透過資料區域性原則最大化計算吞吐量。

主要資料結構

  1. Tensor:表示n維數值陣列。
  2. Model:代表由支援的深度學習/機器學習框架後端提供的計算圖。
  3. Script:代表一個TorchScript程式。

RedisAI的優勢

  1. 高吞吐量:相比其他AI模型服務平台,RedisAI可提供高達9倍的吞吐量。
  2. 多框架支援:支援TensorFlow、PyTorch、ONNXRuntime等最先進的平台訓練的模型。
  3. 跨平台執行:可在CPU、GPU、高階計算引擎甚至小型裝置如Raspberry Pi或NVIDIA Jetson上執行。
  4. 低延遲:透過直接從資料函式庫分享記憶體中檢索參考資料,最小化延遲。
  5. 無縫模型更新:透明地更新模型而不影響推理效能,並與MLFlow完全整合以管理AI生命週期。

內容解密:

RedisAI透過簡化AI模型的佈署和服務,提高了AI應用的效能和可擴充套件性。其支援的多種深度學習框架和資料結構,使得開發者能夠更靈活地構建和佈署AI模型。

為何需要 Redis Enterprise

簡介

到目前為止,我們已經具備了使用 Redis 開發解決方案所需的基礎。作為開發人員或架構師,在開發軟體或應用程式時,正處於一個競爭激烈的環境中。我們需要高效能和低延遲,同時還需要在開發複雜功能時保持簡單性,並與各種系統和語言相容。Redis 是一個極佳的選擇,因為它是用 C 語言編寫的,執行完全在記憶體中,並且經過最佳化,可以在亞毫秒級延遲下提供每秒數百萬次的操作。

然而,當進入生產階段時,我們不禁會思考:誰在支援這項技術?如果出現問題,是否有專家可以指導我們設計正確的開發和佈署策略?雖然 Redis 是一個開源專案,但 Redis Labs 是 Redis 的家園,它提供了企業級的解決方案。Redis Enterprise 增強了 Redis 開源軟體的功能,並幫助開發人員更快地將更高效能、更可靠的應用程式推向市場。

章節結構

在本章中,我們將討論以下主題:

  • Redis Labs 簡介
  • Redis Enterprise 簡介
  • Redis Enterprise 的功能特性
    • 線性擴充套件
    • 多模型資料函式庫
    • 高用性
    • 持久化
    • 備份與還原
    • 多租戶
    • 地理分散式資料函式庫複製(主動-被動、主動-主動)
    • Redis on Flash
    • 安全性
    • 支援服務

學習目標

在本章中,我們將瞭解:

  • Redis Enterprise 的功能特性、支援的平台和佈署選項。

本章的大部分內容參考自 Redis Labs 官方網站,並且在書寫時是最新的。我們建議讀者造訪官方網站以取得企業產品的最新資訊。

關於 Redis Labs

Redis Labs 是一傢俬人軟體公司(前身稱為 Garantia),是 Redis 的家園。它是 Redis 資料函式庫解決方案的商業提供者,提供卓越的效能、無與倫比的可靠性和無可比擬的靈活性,用於個人化、機器學習、物聯網、搜尋、電子商務、社交和計量解決方案。

Redis Labs 總公司位於加利福尼亞州的 Mountain View,其研發中心位於以色列的特拉維夫。它在倫敦(英國)和班加羅爾(印度)設有辦事處,銷售團隊遍佈全球。

Redis Labs 由 Ofer Bengal(前 RiT Technologies 的創始人和 CEO)和 Yiftach Shoolman(前 Crescendo 的創始人和執行長,被 F5 Networks 收購)於 2011 年創立。2015 年,Redis 的創造者和主要開發者 Salvatore Sanfilippo 加入 Redis Labs,長官開源開發,Redis Labs 成為開源專案的官方贊助商。

您可以在以下網址找到更多關於 Redis Labs 長官層的資訊:https://redislabs.com/company/team/

Redis Labs 在頂級分析報告中始終被評為 NoSQL、記憶體資料函式庫、運作資料函式庫和資料函式庫即服務(DBaaS)的長官者,受到超過 7,400 家企業客戶的信賴。其中包括五家《財富》10強企業、三家四大信用卡發行商、三家前五大通訊公司、三家前五大醫療保健公司、六家前八大科技公司和四家前七大零售商。

最近,Redis Labs 以 1 億美元的融資達到 10 億美元的估值,成為矽谷最新的獨角獸公司!更多詳情請參閱福布斯網站:https://www.forbes.com/sites/kenrickcai/2020/08/25/redis-labs-database-startup-series-f-unicorn/#6f56002c3b3a

關於 Redis Enterprise

Redis Labs 提供兩種形式的 Redis 資料函式庫產品:第一種是可下載的軟體,稱為 Redis Enterprise Software;另一種是稱為 Redis Enterprise Cloud 的雲端服務。

下表可作為快速參考,幫助您根據應用程式使用 Redis Enterprise 的場景選擇合適的佈署選項。

特性 Redis Enterprise Software Redis Enterprise Cloud
佈署方式 自行佈署 雲端服務
控制權
成本 較高前期成本 按需付費
可擴充套件性
安全性

對於這兩種選項,Redis Labs 都提供了免費試用,您可以在官方網站上檢視更多資訊。

Redis Enterprise Software 詳細介紹

Redis Enterprise Software 是針對需要在本地佈署或私有雲環境中執行 Redis 的企業設計的。它提供了高度的控制權和自定義選項,使企業能夠根據自己的特定需求進行組態。

主要特點:
  1. 線性擴充套件:Redis Enterprise Software 支援線性擴充套件,能夠隨著資料量的增長而無縫擴充套件。
  2. 多模型資料函式庫:支援多種資料模型,包括鍵值對、檔案、圖形等。
  3. 高用性:提供自動容錯移轉和高用性組態,確保系統持續執行。
  4. 持久化:支援資料持久化,確保資料不會因重啟或故障而丟失。
  5. 備份與還原:提供定期的自動備份和快速還原功能,保障資料安全。
  6. 多租戶:支援多租戶架構,能夠在單一例項中隔離不同應用或使用者的資料。
  7. 地理分散式資料函式庫複製:支援主動-被動和主動-主動複製,能夠在多個地理位置之間同步資料。
  8. Redis on Flash:利用 Flash 儲存最佳化效能和成本。
  9. 安全性:提供多層次的安全措施,包括加密、存取控制等。
  10. 支援服務:提供專業的技術支援和諮詢服務。

Redis Enterprise Cloud 詳細介紹

Redis Enterprise Cloud 是由 Redis Labs 管理的雲端服務,提供簡單易用的 Redis 解決方案,無需管理基礎設施即可享受企業級功能。

主要特點:
  1. 便捷管理:無需管理基礎設施,專注於應用開發。
  2. 自動更新:自動進行軟體更新和維護。
  3. 全球佈署:支援在多個雲區域佈署,提供低延遲和高用性。
  4. 靈活定價:提供按需付費的定價模式,適合不同規模的企業。
  5. 企業級安全:提供與 Redis Enterprise Software 相同的安全特性。

圖表翻譯:

  graph LR;
    A[Redis Enterprise] --> B[Redis Enterprise Software];
    A --> C[Redis Enterprise Cloud];
    B --> D[自行佈署];
    B --> E[高控制權];
    C --> F[雲端服務];
    C --> G[按需付費];

此圖示展示了 Redis Enterprise 的兩種主要佈署選項:Redis Enterprise Software 和 Redis Enterprise Cloud。前者提供高度的控制權和自定義選項,而後者則提供了便捷管理和按需付費的優勢。

內容解密:

上述圖表清晰地展示了 Redis Enterprise 的兩種佈署方式及其主要特點。左側代表 Redis Enterprise Software,其特點包括自行佈署和高控制權;右側代表 Redis Enterprise Cloud,其特點是雲端服務和按需付費模式。這兩種佈署方式滿足了不同企業的需求,使得他們能夠根據自己的具體情況選擇最合適的解決方案。