為了簡化開發人員對較新的 Redis 模組及其提供的功能的體驗,同時簡化支援其功能的文件和客戶端。以幫助開發人員從開始使用 Redis 的那一刻起,就能充分提高工作效率。Redis Stack誕生了。Redis Stack 將較新的 Redis 模組整合到一個產品中。這使得我們可以輕鬆地開始使用我們基於 Redis 的搜尋、文件、圖形和時間序列功能進行構建。
Redis Stack 是由三個元件組成的套件:
1. Redis Stack Server 將開源 Redis 與 RediSearch、RedisJSON、RedisGraph、RedisTimeSeries 和 RedisBloom 結合在一起。
2. RedisInsight 一款強大的工具,用於視覺化和最佳化 Redis 資料,它使實時應用開發比以往任何時候都更簡單、更有趣。
3. Redis Stack Client SDK 包括領先的 Java、JavaScript 和 Python 官方 Redis客戶端。 這些客戶端還包括Redis全新的物件對映庫套件,這些庫提供了對開發人員友好的抽象,只需幾行程式碼即可大大提高工作效率。這些庫被稱為 Redis OM for .NET、Node.js、Java、Python,它們還能比以往更輕鬆地與 Spring、ASP.NET Core、FastAPI 和 Express 等主要應用程式框架整合。
Redis Stack 入門
幾種快速入門 Redis Stack 的方法:
·直接從 redis.io 下載 Redis Stack
· 透過你最喜歡的軟體包管理器安裝,或直接啟動 Redis Stack docker 映象進行安裝
· 透過在 Redis Enterprise Cloud 上建立免費資料庫或在雲中部署 Redis Stack。Redis Enterprise 中提供了 Redis Stack 的能力,供使用者自行管理或在企業內部部署。
當你的 Redis Stack Server 成功啟動並執行,你就可以立即利用 RedisInsight 來視覺化、分析並最佳化你的 Redis 資料。RedisInsight 包含一系列指南,可指導你瞭解多個 Redis Stack 使用案例。Redis Stack 現已全面支援 Redis 6.2,並已存在支援 Redis 7.0 的候選版本。
客戶端側:在幾款領先的Redis客戶端提供了Redis的全新物件對映庫redis-om-dotnet。
Redis Stack會替代Redis嗎?
Redis Stack 將為實時應用領域帶來無限可能,但Redis Stack 並不是 Redis 的替代品。Redis 是一項核心開源技術,企業始終可以選擇下載、構建、安裝和執行開源 Redis。當你準備好執行 Redis Stack 時,你可以使用Redis複製機制或透過載入你的RDB或AOF檔案來輕鬆遷移資料。
Redis Stack的許可模式
· Redis Stack 的所有程式碼庫元件都是開放的,每個人都可以免費使用
· Redis Stack Server 是根據 Redis Source Available License 2.0(RSALv2)(與Redis 模組使用的許可證相同)提供的。
· 根據現有的伺服器端公共許可證(SSPL)提供 RedisInsight。
· Redis clients 和Redis的物件對映庫已根據開源 MIT 許可釋出。
FAQ
Redis Stack 包含哪些元件?
· Redis Stack 是一個單獨的軟體包,其中包括搭載了最新的 Redis 模組的開源 Redis(即 Redis Stack Server)和 RedisInsight。
· 在 Redis Stack Server 的初始版本中,包含了五個模組: RedisJSON、RedisSearch、RedisGraph、RedisTimeSeries 和 RedisBloom。
· Redis Stack 由官方 Redis client 和物件對映庫提供支援,允許開發人員在多個應用框架(包括 Spring、ASP.Net Core、Express 和 FastAPI)中輕鬆使用高階的 Redis Stack 功能。
Redis Stack 為開發人員提供了哪些功能?
· 索引和查詢 Redis 資料、聚合、執行全文搜尋
· 執行高階向量相似性搜尋(KNN)
· 高效儲存和處理巢狀的 JSON 文件
· 以屬性圖的形式構建和模擬關係
· 儲存、查詢和聚合時間序列資料
· 充分利用快速、空間和計算效率高的機率資料結構
· 使用 RedisInsight 輕鬆實現 Redis 資料的視覺化、除錯和分析
Redis Stack 還會新增更多功能嗎?
如果有以下情況,Redis官方團隊會考慮為 Redis Stack 新增新功能甚至模組:
1. 存在社群的需求
2. 新功能符合Redis的願景
3. Redis公司的工程團隊能夠正式支援新增功能
為什麼 RedisGears 不是 Redis Stack 第一個版本的一部分?
· RedisGears 為 Redis 增加了資料庫觸發器、流處理、分散式函式和完全可程式設計性。為 JavaScript 提供 GA 支援後,將 RedisGears 新增到 Redis Stack 中。
什麼是 Redis 物件對映庫(object-mapping libraries)?
· Redis 物件對映庫在 Redis 命令應用程式介面之上提供了一個抽象層次,就像 ORM 對 SQL 資料庫的作用一樣。從而可以把 Redis 客戶端核心庫與 Redis 物件對映庫區分開來。
核心 Redis 客戶端庫有以下職責:
· 執行 Redis 協議(RESP 等)
· 管理連線(TCP 等)、重新連線、伺服器發現等
· 管理執行邏輯(執行緒、非同步 io 等)
· 為執行任意 Redis 命令暴露 Redis 的 API
· 以常用的互動語法風格的方式暴露 Redis 命令
· 透過連線字串連線到任何 Redis 已部署的例項
物件對映庫提供了額外的能力:
· 允許開發人員用盡可能少的程式碼行實現常見的 Redis 用例。目前,這包括領域建模和流暢的查詢 API。未來,其他常見 Redis 用例也將受到支援,包括快取、會話儲存、速率限制、排行榜和去重器。
· 為 Redis Stack 提供的功能提供高階應用程式介面
· 在不暴露底層 Redis 命令的情況下提供 Redis 的優勢能力
· 與主要應用框架(如ASP.NET Core、TJC.
這些物件對映庫總是依賴於一個或多個 Redis 核心庫。
適用於 .NET 的 RedisOM
Redis OM .NET 是一個專門構建的庫,用於處理 Redis Stack 中的文件。在本教程中,我們將構建一個簡單的 ASP.NET Core Web-API 應用,用於在簡單的人員和地址模型上執行 CRUD 操作,我們將使用 Redis OM .NET 完成所有這些操作。
先決條件
- .NET 6 SDK
- 用於編寫 .NET 的任何 IDE(Visual Studio、Rider、Visual Studio Code)。
- RediSearch 必須作為 Redis 堆疊配置的一部分進行安裝。
- 可選:Docker Desktop,用於在 docker 中執行 redis-stack 進行本地測試。
執行 Redis Stack
有多種方法可以執行 Redis Stack。一種方法是使用 docker 映像:
docker run -d -p 6379:6379 -p 8001:8001 redis/redis-stack
建立專案
若要建立專案,只需執行:
dotnet new webapi -n Redis.OM.Skeleton --no-https --kestrelHttpPort 5000
然後在所選的 IDE 中開啟該檔案。Redis.OM.Skeleton.csproj
配置應用
向檔案新增欄位以配置應用程式。將該連線字串設定為 Redis 例項的 URI。如果使用前面提到的 docker 命令,則連線字串將為 。REDIS_CONNECTION_STRING
appsettings.json
redis://localhost:6379
連線字串規範
Redis URI 的規範位於此處。可以將 或 用於不包含 的連線字串。:password@host:port
default:password@host:port
username
建立模型
請確保將包新增到您的專案中。透過此軟體包,您可以輕鬆建立模型和查詢 Redis 域物件。Redis.OM
dotnet add package Redis.OM
現在是時候建立應用程式將用於儲存/檢索人員的 / 模型了。建立一個名為的新目錄,並將檔案新增到其中。在 中,新增以下內容:Person
Address
Model
Address.cs
Person.cs
Address.cs