.NET Aspire Redis®* 整合
Redis 是用於快取、向量搜尋和 NoSQL 資料庫的世界最快數據平臺。
.NET Aspire
Redis 整合可讓您連線到現有的 Redis 實例,或使用 docker.io/library/redis
容器映射從 .NET 建立新的實例。
Garnet 是來自 Microsoft Research 的高效能快取存放區,符合 Redis 串行化通訊協定 (RESP)。
.NET Aspire
Redis 整合可讓您連線到現有的 Garnet 實例,或使用 ghcr.io/microsoft/garnet
容器映射從 .NET 建立新的實例。
Valkey 是一個 Redis 分叉,符合 Redis 串行化通訊協定 (RESP)。 它是高效能索引鍵/值數據存放區,可支援各種工作負載,例如快取、消息佇列,而且可作為主資料庫。
.NET Aspire
Redis 整合可讓您連線到現有的 Valkey 實例,或使用 docker.io/valkey/valkey
容器映射從 .NET 建立新的實例。
主機整合
託管整合 Redis 將 Redis 資源模型化為 RedisResource 類型。 若要存取此類型和 API,您可以將它新增到 📦Aspire中的Redis NuGet 套件至 app host 專案。
dotnet add package Aspire.Hosting.Redis
如需詳細資訊,請參閱 dotnet add package 或 管理 .NET 應用程式中的套件相依性。
新增 Redis 資源
在應用程式主機專案中,呼叫 builder
實例上的 AddRedis,以新增 Redis 資源:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddRedis("cache");
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
當 .NET.NET Aspire 將容器映射新增至應用程式主機時,如上述範例中的 docker.io/Redis/Redis
映射所示,它會在本機計算機上建立新的 Redis 實例。
Redis 資源的參考(cache
變數)已新增至 ExampleProject
。
WithReference 方法會在名為 "cache"
的 ExampleProject
中設定連接。 如需詳細資訊,請參閱 容器資源生命週期。
提示
如果您想要連線到現有的 Redis 實例,請改為呼叫 AddConnectionString。 如需詳細資訊,請參閱 參考現有資源。
使用 Redis Insights 新增 Redis 資源
若要將 Redis Insights 新增至 Redis 資源,請呼叫 WithRedisInsight
方法:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddRedis("cache")
.WithRedisInsight();
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
Redis Insights 是一種免費的圖形化介面,可在所有作業系統和 Redis 部署中,透過 AI 助理 Redis Copilot 的協助,分析 Redis 數據。
.NET
.NET Aspire 將另一個容器映像新增至運行指揮應用程式的應用主機 docker.io/redis/redisinsight
。
注意
若要設定 RedisInsightResource
主機埠,請對 WithHostPort
API 進行呼叫並提供所需的埠號碼。
使用 Redis 指揮官新增 Redis 資源
若要將 Redis 指揮官 新增至 Redis 資源,請呼叫 WithRedisCommander 方法:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddRedis("cache")
.WithRedisCommander();
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
Redis 指揮官是一個 Node.js Web 應用程式,可用來檢視、編輯和管理 Redis 資料庫。
.NET
.NET Aspire 將另一個容器映像新增至執行指揮官應用程式的主機 docker.io/rediscommander/redis-commander
。
提示
若要設定 RedisCommanderResource 主機埠,請進行對 WithHostPort API 的呼叫,來提供所需的埠號碼。
使用數據量新增 Redis 資源
若要將數據磁碟區新增至 Redis 資源,請在 Redis 資源上呼叫 WithDataVolume 方法:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddRedis("cache")
.WithDataVolume(isReadOnly: false);
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
數據磁碟區可用來將 Redis 數據保存在其容器生命週期之外。 資料量會掛接在 /data
路徑中的 Redis 容器中,而當未提供 name
參數時,名稱將隨機產生。 如需了解有關資料卷的更多資訊,以及它們為何被優先於 系結掛接,請參閱 Docker 文件:卷。
新增具有資料綁定掛載的 Redis 資源
若要將數據系結掛接新增至 Redis 資源,請呼叫 WithDataBindMount 方法:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddRedis("cache")
.WithDataBindMount(
source: @"C:\Redis\Data",
isReadOnly: false);
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
數據系結裝載依賴主計算機的檔案系統,在容器重新啟動時保存 Redis 數據。 資料綁定掛載會在 Redis 容器中主機上的 C:\Redis\Data
路徑(或 Unix的 /Redis/Data
路徑)進行掛載。 如需資料系結掛接的詳細資訊,請參閱 Docker 檔:系結掛接。
新增具有持續性 Redis 資源
若要將持續性新增至 Redis 資源,請使用數據磁碟區或數據系結掛接呼叫 WithPersistence 方法:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddRedis("cache")
.WithDataVolume()
.WithPersistence(
interval: TimeSpan.FromMinutes(5),
keysChangedThreshold: 100);
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
上述程式碼透過以指定的間隔和閾值擷取 Redis 數據的快照集,使 Redis 資源具有持續性。
interval
是快照集匯出與 keysChangedThreshold
之間的時間,是觸發快照集所需的密鑰變更作業數目。 如需有關持久性的更多資訊,請參閱 Redis 文件:持久性。
Garnet 裝載整合會將 Garnet 資源模型化為 GarnetResource 類型。 若要存取此類型和 API,可讓您將它新增至 📦Aspire。hosting.Garnet應用程式主機 專案中的 NuGet 套件。
如需詳細資訊,請參閱 dotnet add package 或 在 .NET 應用程式中管理套件相依性。
新增 Garnet 資源
在應用程式主機專案中,在 builder
實例中呼叫 AddGarnet 來新增 Garnet 資源:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddGarnet("cache");
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
當 .NET.NET Aspire 將容器映射新增至應用程式主機時,如上述範例中的 ghcr.io/microsoft/garnet
映像所示,它會在本機計算機上建立新的 Garnet 實例。 Garnet 資源的參考(cache
變數)會新增至 ExampleProject
。
WithReference 方法會在名為 "cache"
的 ExampleProject
中設定連接。 如需詳細資訊,請參閱 容器資源生命週期。
提示
如果您想要連線到現有的 Garnet 實例,請改為呼叫 AddConnectionString。 如需詳細資訊,請參閱 參考現有資源。
新增具有資料量的 Garnet 資源
若要將數據量新增至 Garnet 資源,請在 Garnet 資源上呼叫 AddGarnet 方法:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddGarnet("cache")
.WithDataVolume(isReadOnly: false);
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
數據磁碟區用來將 Garnet 資料保存在其容器生命週期之外。 數據磁碟區會掛接在 Garnet 容器中的 /data
路徑,且未提供 name
參數時,會隨機產生名稱。 如需數據磁碟區的詳細資訊,以及它們為何優先於 系結掛接的詳細資訊,請參閱 Docker 檔:磁碟區。
使用數據系結掛接新增 Garnet 資源
若要將數據系結掛接新增至 Garnet 資源,請呼叫 WithDataBindMount 方法:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddGarnet("cache")
.WithDataBindMount(
source: @"C:\Garnet\Data",
isReadOnly: false);
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
重要
與 磁碟區相比,數據 系結掛 的功能有限,而 磁碟區可提供更佳的效能、可移植性和安全性,使其更適合生產環境。 不過,綁定掛載允許直接存取和修改主機系統上的檔案,非常適合開發和測試需要即時變更的情況。
數據系結掛接依賴主計算機的文件系統,在容器重新啟動時保存 Garnet 數據。 數據系結掛接會掛接在 Windows 上的 C:\Garnet\Data
(或 Unix上的 /Garnet/Data
) 路徑上,位於 Garnet 容器中的主電腦上。 如需資料系結掛接的詳細資訊,請參閱 Docker 檔:系結掛接。
新增具有持續性的 Garnet 資源
若要將持續性新增至 Garnet 資源,可透過資料卷或資料綁定掛載呼叫 WithPersistence 方法:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddGarnet("cache")
.WithDataVolume()
.WithPersistence(
interval: TimeSpan.FromMinutes(5),
keysChangedThreshold: 100);
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
前述程式碼透過以指定的間隔和閾值擷取 Garnet 數據的快照,將新增持久性至 Redis 資源。
interval
是快照集匯出與 keysChangedThreshold
之間的時間,是觸發快照集所需的密鑰變更作業數目。 如需關於持久性的更多資訊,請參閱 Redis 文件:持久性。
Valkey 主機整合將 Valkey 資源建模為 ValkeyResource 類別。 若要存取此類型和 API,可讓您將它新增至 📦Aspire。Hosting.Valkey應用程式主機 專案中的 NuGet 套件。
dotnet add package Aspire.Hosting.Valkey
如需詳細資訊,請參閱 dotnet add package 或 管理 .NET 應用程式中的套件相依性。
新增 Valkey 資源
在應用程式主機專案中,呼叫 builder
實例上的 AddValkey 以新增 Valkey 資源:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddValkey("cache");
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
當 .NET.NET Aspire 將容器影像新增至應用程式主機時,如上述範例中所示的 docker.io/valkey/valkey
影像,它會在本機計算機上建立新的 Valkey 實例。 將對您的 Valkey 資源的參照 (cache
變數) 新增至 ExampleProject
。
WithReference 方法會在名為 "cache"
的 ExampleProject
中設定連接。 如需詳細資訊,請參閱 容器資源生命週期。
小技巧
如果您想要連線到現有的 Valkey 實例,請改為呼叫 AddConnectionString。 如需詳細資訊,請參閱 參考現有資源。
添加具資訊量的 Valkey 資源
若要將數據磁碟區新增至 Valkey 資源,請在 Valkey 資源上呼叫 AddValkey 方法:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddValkey("cache")
.WithDataVolume(isReadOnly: false);
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
數據磁碟區用來將 Valkey 數據保存在其容器生命週期之外。 資料量會掛載在 Valkey 容器中的 /data
路徑,當未提供 name
參數時,名稱會隨機生成。 如需有關數據磁碟區的更多信息,以及為何偏好它們而不是 系結掛接,請參閱 Docker 文件:磁碟區。
新增 Valkey 資源並使用資料綁定掛載
若要將數據系結掛接新增至 Valkey 資源,請呼叫 WithDataBindMount 方法:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddValkey("cache")
.WithDataBindMount(
source: @"C:\Valkey\Data",
isReadOnly: false);
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
重要
相較於 磁碟區,數據 系結掛 接的功能有限,可提供更佳的效能、可移植性和安全性,使其更適合生產環境。 不過,綁定掛載允許直接存取和修改主機系統上的檔案,非常適合用於開發和測試需要即時變更的情境。
數據系結掛接依賴主計算機的文件系統,在容器重新啟動時保存 Valkey 數據。 數據綁定掛載會掛載在 Windows 上的 C:\Valkey\Data
(或 Unix上的 /Valkey/Data
)路徑上,位於 Valkey 容器中的主機上。 如需資料系結掛接的詳細資訊,請參閱 Docker 檔:系結掛接。
新增具有持續性的 Valkey 資源
若要將持續性新增至 Valkey 資源,請使用資料磁碟區或資料綁定掛載來呼叫 WithPersistence 方法:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddValkey("cache")
.WithDataVolume()
.WithPersistence(
interval: TimeSpan.FromMinutes(5),
keysChangedThreshold: 100);
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
上述程式代碼會透過在指定的間隔和閾值拍攝 Valkey 數據的快照,增加 Redis 資源的持久性。
interval
是快照集匯出與 keysChangedThreshold
之間的時間,是觸發快照集所需的密鑰變更作業數目。 如需持久性的詳細資訊,請參閱 Redis 檔:持久性。
裝載整合健康情況檢查
Redis 裝載整合會自動為適當的資源類型新增健康檢查。 健康檢查會確認 server 正在執行,並且可以建立與其連線。
主機整合功能依賴 📦 AspNetCore.HealthChecks。Redis NuGet 套件。
Client 整合
若要開始使用 .NET Aspire Stack Exchange Redisclient 整合,請安裝 📦Aspire。StackExchange。client-consuming 專案中Redis NuGet 套件,也就是使用 Redisclient的應用程式專案。 Redis client 整合會註冊一個 IConnectionMultiplexer 實例,您可以用來與 Redis互動。
dotnet add package Aspire.StackExchange.Redis
新增 Redisclient
在 client取用專案的 Program.cs 檔案中,在任何 IHostApplicationBuilder 上呼叫 AddRedisClient 擴充方法,以註冊 IConnectionMultiplexer
,以透過相依性插入容器使用。 方法會採用連接名稱參數。
builder.AddRedisClient(connectionName: "cache");
提示
connectionName
參數必須符合在應用程式主專案中新增 Redis 資源時所使用的名稱。 如需詳細資訊,請參閱 新增 Redis 資源。
提示
connectionName
參數必須符合在應用程式主機專案中新增 Garnet 資源時所使用的名稱。 如需詳細資訊,請參閱 新增 Garnet 資源。
提示
connectionName
參數必須符合在應用程式主機專案中新增 Valkey 資源時所使用的名稱。 如需詳細資訊,請參閱 新增 Valkey 資源。
接著,您可以使用相依注入來擷取 IConnection
實例。 例如,若要從範例服務擷取連線:
public class ExampleService(IConnectionMultiplexer connectionMux)
{
// Use connection multiplexer...
}
如需相依性插入的詳細資訊,請參閱 .NET 相依性插入。
新增索引鍵 Redisclient
在某些情況下,您可能想要以不同的連線名稱註冊多個 IConnectionMultiplexer
實例。 若要註冊具 Redis 鍵入的用戶端,請呼叫 AddKeyedRedisClient 方法:
builder.AddKeyedRedisClient(name: "chat");
builder.AddKeyedRedisClient(name: "queue");
然後,您可以使用相依注入來擷取 IConnectionMultiplexer
實例。 例如,若要從範例服務擷取連線:
public class ExampleService(
[FromKeyedServices("chat")] IConnectionMultiplexer chatConnectionMux,
[FromKeyedServices("queue")] IConnectionMultiplexer queueConnectionMux)
{
// Use connections...
}
如需索引鍵服務的詳細資訊,請參閱 .NET 相依性插入:索引鍵服務。
配置
.NET Aspire Stack Exchange Redisclient 整合提供多個選項,可根據專案的需求和慣例來設定 Redis 連線。
使用連接字串
從 [ConnectionStrings
組態] 區段使用連接字串時,您可以在呼叫 AddRedis時提供連接字串的名稱:
builder.AddRedis("cache");
從 [ConnectionStrings
組態] 區段使用連接字串時,您可以在呼叫 AddGarnet時提供連接字串的名稱:
builder.AddGarnet("cache");
從 [ConnectionStrings
組態] 區段使用連接字串時,您可以在呼叫 AddValkey時提供連接字串的名稱:
builder.AddValkey("cache");
然後,連接字串將會從 [ConnectionStrings
組態] 區段擷取:
{
"ConnectionStrings": {
"cache": "localhost:6379"
}
}
如需如何格式化此連接字串的詳細資訊,請參閱 Stack Exchange Redis 組態檔。
使用組態提供者
.NET Aspire Stack Exchange Redis 整合支援 Microsoft.Extensions.Configuration。 它使用 Aspire:StackExchange:Redis
鍵從配置載入 StackExchangeRedisSettings。 設定選項的範例 appsettings.json:
{
"Aspire": {
"StackExchange": {
"Redis": {
"ConnectionString": "localhost:6379",
"DisableHealthChecks": true,
"DisableTracing": false
}
}
}
}
如需完整的 Redisclient 整合 JSON 架構,請參閱 Aspire。StackExchange。Redis/ConfigurationSchema。json。
使用內聯委派
您也可以傳遞 Action<StackExchangeRedisSettings>
委派來設定部分或所有內嵌選項,例如設定 DisableTracing
:
builder.AddRedisClient(
"cache",
static settings => settings.DisableTracing = true);
Client 整合健康檢查
根據預設,.NET.NET Aspire 整合會為所有服務啟用 健康檢查。 如需詳細資訊,請參閱 .NET.NET Aspire 整合概觀。
.NET Aspire Stack Exchange Redis 整合會處理下列事項:
- 當 StackExchangeRedisSettings.DisableHealthChecks 是
false
時,新增健康檢查,以嘗試連線至容器實例。 - 與
/health
HTTP 端點整合,規定所有已註冊的健康檢查必須通過,才能視應用程式為準備接受流量。
可檢視性和遙測
.NET .NET Aspire 整合會自動設定記錄、追蹤和計量組態,有時被稱為 可觀察性的支柱。 如需整合可觀察性和遙測的詳細資訊,請參閱 .NET.NET Aspire 整合概觀。 視支援服務而定,某些整合可能只支援其中一些功能。 例如,某些整合支援記錄和追蹤,但不支援計量。 您也可以使用 組態 一節中呈現的技術來停用遙測功能。
伐木
.NET Aspire Stack Exchange Redis 整合會使用下列記錄類別:
Aspire.StackExchange.Redis
追踪
.NET Aspire Stack Exchange Redis 整合會使用 OpenTelemetry發出下列追蹤活動:
OpenTelemetry.Instrumentation.StackExchangeRedis
指標
.NET Aspire Stack Exchange Redis 整合功能目前預設不支援指標,因為 StackExchange.Redis
函式庫的限制。
Azure Redis 主機托管整合
若要將 Redis 資源部署至 Azure,請安裝 📦Aspire主機託管AzureRedis NuGet 套件:
dotnet add package Aspire.Hosting.Azure.Redis
新增 Azure Cache for Redisserver 資源
安裝 .NET Aspire 主機 AzureRedis 套件之後,請在應用程式主機專案中呼叫 AddAzureRedis
擴充方法:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddAzureRedis("azcache")
var exampleProject = builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
上述 AddAzureRedis
呼叫會將 Redisserver 資源設定為 Azure Cache for Redis。
重要
根據預設,AddAzureRedis
會設定 Microsoft Entra ID 驗證。 這需要修改那些必須連線到這些資源的應用程式,比如說 client 整合。
新增 Azure Cache for Redisclient
預設情況下,當您在 Redis 裝載整合中呼叫 AddAzureRedis
時,它會設定 📦 MicrosoftAzureStackExchangeRedis NuGet 套件來啟用驗證。
dotnet add package Microsoft.Azure.StackExchangeRedis
您可以使用 client 整合和 Microsoft.Azure.StackExchangeRedis
來取用 Redis 連線。 請考慮下列組態程式代碼:
var azureOptionsProvider = new AzureOptionsProvider();
var configurationOptions = ConfigurationOptions.Parse(
builder.Configuration.GetConnectionString("cache") ??
throw new InvalidOperationException("Could not find a 'cache' connection string."));
if (configurationOptions.EndPoints.Any(azureOptionsProvider.IsMatch))
{
await configurationOptions.ConfigureForAzureWithTokenCredentialAsync(
new DefaultAzureCredential());
}
builder.AddRedisClient("cache", configureOptions: options =>
{
options.Defaults = configurationOptions.Defaults;
});
如需詳細資訊,請參閱 Microsoft。Azure。StackExchangeRedis 存放庫。
另請參閱
*:Redis 是 Redis 有限公司的註冊商標。任何權利都保留給 Redis 有限公司。Microsoft 的任何用途僅作為參考之用,且不會表明 Redis 與 Microsoft 之間的任何贊助、認可或關聯。返回頂端?