含まれているもの: ホスティング統合 —および—
Client 統合
.NET Aspire
Redis 分散キャッシュ統合を使用する方法について説明します。
Aspire.StackExchange.Redis.DistributedCaching
ライブラリは、 サーバーによってサポートされる Redis プロバイダーを、docker.io/library/redis
コンテナー イメージに登録するために使用されます。
.NET Aspire
Redis 分散キャッシュ統合を使用する方法について説明します。
Aspire.StackExchange.Redis.DistributedCaching
ライブラリは、Garnet サーバーによってサポートされる IDistributedCache プロバイダーを、ghcr.io/microsoft/garnet
コンテナー イメージに登録するために使用されます。
.NET Aspire
Redis 分散キャッシュ統合を使用する方法について説明します。
Aspire.StackExchange.Redis.DistributedCaching
ライブラリは、Valkey サーバーによってサポートされる IDistributedCache プロバイダーを、docker.io/valkey/valkey
コンテナー イメージに登録するために使用されます。
ホスティング統合
Redis ホスティング統合は、Redis の種類として RedisResource リソースをモデル化します。 アプリ ホスト プロジェクト内のリソースとして表現するために、この種類と API にアクセスするには、📦Aspireホスティング.Redis NuGet パッケージを追加します。
dotnet add package Aspire.Hosting.Redis
詳細については、「dotnet パッケージ の追加」または「.NET アプリケーションでのパッケージの依存関係の管理」を参照してください。
リソース Redis を追加する
アプリ ホスト プロジェクトで、AddRedis インスタンスの builder
を呼び出して、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 メソッドは、ExampleProject
という名前の "cache"
で接続を構成します。 詳細については、「コンテナー リソースのライフサイクルの」を参照してください。
ヒント
既存の 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 は、AI アシスタントである Copilot Redis の助けを借りて、すべてのオペレーティング システムと Redis デプロイの Redis データを分析するための無料のグラフィカル インターフェイスです。
.NET
.NET Aspire は、コマンダー アプリを実行する別のコンテナー イメージ docker.io/redis/redisinsight
をアプリ ホストに追加します。
手記
RedisInsightResource
のホスト ポートを構成するには、WithHostPort
API への呼び出しをチェーンし、目的のポート番号を指定します。
Redis リソースに Redis コマンダーを追加する
Redis リソースに を追加するには、Redis メソッドを呼び出します。
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 Commander は、Node.js データベースの表示、編集、管理に使用される Redis Web アプリケーションです。
.NET
.NET Aspire は、コマンダー アプリを実行する別のコンテナー イメージ docker.io/rediscommander/redis-commander
をアプリ ホストに追加します。
ヒント
RedisCommanderResource のホスト ポートを構成するには、WithHostPort API への呼び出しをチェーンし、目的のポート番号を指定します。
リソースRedisをデータ ボリュームで追加する
Redis リソースにデータ ボリュームを追加するには、WithDataVolume リソースで Redis メソッドを呼び出します。
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 データを保持します。 データ バインド マウントは、C:\Redis\Data
コンテナー内のホスト コンピューター上の Windows 上の /Redis/Data
(または Unixの Redis) パスにマウントされます。 データバインドマウントの詳細については、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 Aspire.Hosting.Garnet
詳細については、「dotnet パッケージ の追加」または「.NET アプリケーションでのパッケージの依存関係の管理」を参照してください。
Garnet リソースの追加
アプリ ホスト プロジェクトで、AddGarnet インスタンスの builder
を呼び出して、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 メソッドは、ExampleProject
という名前の "cache"
で接続を構成します。 詳細については、「コンテナー リソースのライフサイクルの」を参照してください。
ヒント
既存の 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 データを保持するために、ホスト マシンのファイルシステムに依存します。 データ バインド マウントは、Garnet コンテナー内のホスト コンピューター上の Windows 上の C:\Garnet\Data
(または /Garnet/Data
の Unix) パスにマウントされます。 データバインドマウントの詳細については、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 の種類としてモデル化されます。 この型や、📦Aspireに追加できる API にアクセスするには、Hosting.Valkey NuGet パッケージを アプリホスト プロジェクト内で利用してください。
dotnet add package Aspire.Hosting.Valkey
詳細については、「dotnet パッケージ の追加」または「.NET アプリケーションでのパッケージの依存関係の管理」を参照してください。
Valkey リソースの追加
アプリ ホスト プロジェクトで、AddValkey インスタンスの builder
を呼び出して 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 メソッドは、ExampleProject
という名前の "cache"
で接続を構成します。 詳細については、「コンテナー リソースのライフサイクルの」を参照してください。
ヒント
既存の 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 データを保持するために、ホスト マシンのファイルシステムに依存します。 データ バインド マウントは、Valkey コンテナー内のホスト コンピューター上の Windows 上の C:\Valkey\Data
(または /Valkey/Data
上の Unix) パスにマウントされます。 データバインドマウントの詳細については、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 ホスティング統合により、適切なリソースの種類の正常性チェックが自動的に追加されます。 正常性チェックでは、サーバーが実行中であり、サーバーへの接続を確立できることを確認します。
ホスティング統合は、📦 AspNetCore.HealthChecks NuGet パッケージRedis に依存します。
Client 統合
.NET Aspire Redis 分散キャッシュ統合を始めるには、クライアントが使用するプロジェクト、つまり 📦 分散キャッシュ クライアントを利用するアプリケーションのプロジェクトに、NuGet パッケージ Aspire をインストールします。 Redis クライアント統合では、IDistributedCacheとの対話に使用できる Redis インスタンスが登録されます。
dotnet add package Aspire.StackExchange.Redis.DistributedCaching
クライアント Redis 追加する
クライアントを使用するプロジェクトの Program.cs ファイルで、AddRedisDistributedCache 拡張機能を呼び出して、分散キャッシュに必要なサービスを登録し、依存関係挿入コンテナー経由で使用する IDistributedCache を追加します。
builder.AddRedisDistributedCache(connectionName: "cache");
ヒント
connectionName
パラメーターは、アプリ ホスト プロジェクトに Redis リソースを追加するときに使用する名前と一致する必要があります。 詳細については、「
ヒント
connectionName
パラメーターは、アプリ ホスト プロジェクトで Garnet リソースを追加するときに使用する名前と一致する必要があります。 詳細については、「Garnet リソースの追加」を参照してください。
ヒント
connectionName
パラメーターは、アプリ ホスト プロジェクトで Valkey リソースを追加するときに使用する名前と一致する必要があります。 詳細については、「Valkey リソースの追加」を参照してください。
その後、依存関係の挿入を使用して IDistributedCache
インスタンスを取得できます。 たとえば、サービスからキャッシュを取得するには、次のようにします。
public class ExampleService(IDistributedCache cache)
{
// Use cache...
}
依存関係の挿入の詳細については、.NETを参照してください。
キー付き Redis クライアントを追加する
その制限により、複数の IDistributedCache
インスタンスを同時に登録することはできません。 ただし、複数の Redis クライアントを登録し、特定の接続名に特定の IDistributedCache
インスタンスを使用する必要がある場合があります。
Redis サービスに使用されるキー付きIDistributedCache
クライアントを登録するには、AddKeyedRedisDistributedCache メソッドを呼び出します。
builder.AddKeyedRedisClient(name: "chat");
builder.AddKeyedRedisDistributedCache(name: "product");
その後、依存関係の挿入を使用して IDistributedCache
インスタンスを取得できます。 たとえば、サービスの例から接続を取得するには、次のようにします。
public class ExampleService(
[FromKeyedServices("chat")] IConnectionMultiplexer chatConnectionMux,
IDistributedCache productCache)
{
// Use product cache...
}
キー付きサービスの詳細については、「.NET 依存関係の挿入: キー付きサービスの」を参照してください。
設定
.NET Aspire Redis 分散キャッシュ統合には、プロジェクトの要件と規則に基づいて Redis 接続を構成するための複数のオプションが用意されています。
接続文字列を使用する
ConnectionStrings
構成セクションの接続文字列を使用する場合は、builder.AddRedisDistributedCache
を呼び出すときに接続文字列の名前を指定できます。
builder.AddRedisDistributedCache("cache");
接続文字列は、ConnectionStrings
構成セクションから取得されます。
{
"ConnectionStrings": {
"cache": "localhost:6379"
}
}
この接続文字列の書式を設定する方法の詳細については、Stack Exchange Redis 構成ドキュメントを参照してください。
構成プロバイダーを使用する
.NET Aspire Stack Exchange Redis 分散キャッシュ統合では、Microsoft.Extensions.Configurationがサポートされます。
StackExchangeRedisSettings キーを使用して、構成から Aspire:StackExchange:Redis
を読み込みます。 いくつかのオプションを構成する appsettings.json の例:
{
"Aspire": {
"StackExchange": {
"Redis": {
"ConfigurationOptions": {
"ConnectTimeout": 3000,
"ConnectRetry": 2
},
"DisableHealthChecks": true,
"DisableTracing": false
}
}
}
}
分散キャッシュ クライアント統合 Redis スキーマの完全な JSON については、Aspireを参照してください。StackExchange。Redis.DistributedCaching/ConfigurationSchema.json.
インライン デリゲートを使用する
Action<StackExchangeRedisSettings>
デリゲートを渡して、一部またはすべてのオプションをインラインで設定することもできます。たとえば、DisableTracing
を構成します。
builder.AddRedisDistributedCache(
"cache",
settings => settings.DisableTracing = true);
メソッドの Action<ConfigurationOptions> configureOptions
デリゲート パラメーターを使用して、AddRedisDistributedCache
を設定することもできます。 たとえば、接続タイムアウトを設定するには、次のようにします。
builder.AddRedisDistributedCache(
"cache",
null,
static options => options.ConnectTimeout = 3_000);
Client 統合ヘルスチェック
既定では、.NET.NET Aspireクライアント統合 すべてのサービスで 正常性チェック 有効になっています。 同様に、多くの .NET.NET Aspireホスティング統合 もヘルスチェックエンドポイントを有効にします。 詳細については、以下を参照してください。
- C#でのアプリ正常性チェック .NET
- ASP.NET Core におけるヘルスチェック
.NET Aspire Redis 分散キャッシュ統合では、次の処理が行われます。
-
StackExchangeRedisSettings.DisableHealthChecks が
false
されたときに正常性チェックを追加します。これは、コンテナー インスタンスへの接続を試みます。 -
/health
HTTP エンドポイントと統合されます。このエンドポイントは、アプリがトラフィックを受け入れる準備ができていると見なされるために、登録されているすべての正常性チェックに合格する必要があります。
可観測性とテレメトリ
伐採
.NET Aspire Redis 分散キャッシュ統合では、次のログ カテゴリが使用されます。
Aspire.StackExchange.Redis
Microsoft.Extensions.Caching.StackExchangeRedis
追跡
.NET Aspire Redis 分散キャッシュ統合では、OpenTelemetryを使用して次のトレース アクティビティが生成されます。
OpenTelemetry.Instrumentation.StackExchangeRedis
メトリック
.NET Aspire
Redis 分散キャッシュ統合では、現在、StackExchange.Redis
ライブラリの制限により、既定ではメトリックがサポートされていません。
参照
*: Redis は Redis 株式会社の登録商標です。その中のいかなる権利も、Redis 株式会社に留保されます。Microsoft による使用は参照のみを目的としており、Redis と Microsoft の間のスポンサーシップ、保証、所属を示すものではありません。トップに戻りますか?
.NET Aspire