Redisへの接続
Redis分散キャッシュを設定します。
「Redisへの接続」はCoddyKit上の無料C# Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC# Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C# Academyコースには全4レッスンが含まれています。
Redis とは
Redis は高速なインメモリのキー・バリューデータストアで、分散キャッシュとして広く利用されています。独立したサーバーとして動作し、複数のアプリインスタンスがネットワーク経由で接続します。
パッケージのインストール
ASP.NET Core は Microsoft.Extensions.Caching.StackExchangeRedis パッケージを通じて Redis と統合します。このパッケージは StackExchange.Redis クライアントを IDistributedCache に適合させます。
dotnet add package Microsoft.Extensions.Caching.StackExchangeRedisAddStackExchangeRedisCache による Redis の登録
サービス登録で AddStackExchangeRedisCache を呼び出し、接続文字列を指定します。これにより、Redis が IDistributedCache の実装として組み込まれます。
builder.Services.AddStackExchangeRedisCache(options =>
{
options.Configuration = "localhost:6379";
});構成の使用
接続文字列は appsettings.json に保存し、IConfiguration 経由で読み取って環境ごとに変えられるようにしてください。
builder.Services.AddStackExchangeRedisCache(options =>
{
options.Configuration =
builder.Configuration.GetConnectionString("Redis");
});InstanceName プレフィックス
InstanceName を設定すると、Redis が保存するすべてのキーにプレフィックスが付加されます。これによりアプリのキーが名前空間に分けられるため、複数のアプリで1つの Redis インスタンスを安全に共有できます。
builder.Services.AddStackExchangeRedisCache(options =>
{
options.Configuration = "localhost:6379";
options.InstanceName = "MyApp:";
});接続文字列のオプション
StackExchange.Redis の接続文字列は、複数のエンドポイント、パスワード、SSL、タイムアウトなど、多くのオプションをサポートしています。各オプションはカンマで区切ります。
options.Configuration =
"redis-server:6380,password=secret,ssl=True,abortConnect=False";同じインターフェースで本物の Redis を利用
登録が完了した後も、これまでとまったく同じように IDistributedCache を使い続けられます。変更するのは登録行だけなので、サービスのコードを編集せずに Redis への接続を開始できます。
public WeatherService(IDistributedCache cache) => _cache = cache;
// GetStringAsync / SetStringAsync now talk to RedisRedis をローカルで実行する
開発時には Docker で Redis をすぐに実行し、接続文字列の接続先を Redis に指定できます。
docker run -p 6379:6379 redis:7
# then Configuration = "localhost:6379"マネージド Redis の選択肢
本番環境では、Azure Cache for Redis や AWS ElastiCache などのマネージドサービスが、スケーリング、永続化、フェイルオーバーを処理します。通常は SSL エンドポイントとアクセスキーを使って接続します。
options.Configuration =
"myapp.redis.cache.windows.net:6380,password=KEY,ssl=True";接続の回復性への対応
abortConnect=False を設定すると、起動時に Redis が一時的に利用できない場合でも、クライアントはすぐに例外をスローせず再試行を続けます。呼び出しレベルの回復性には Polly も組み合わせてください。
ヘルスチェック
Redis のヘルスチェックを登録すると、アプリからオーケストレーターやロードバランサーにキャッシュの接続状態を報告できます。
builder.Services.AddHealthChecks()
.AddRedis("localhost:6379");クイックチェック
Redis への接続をテストしてみましょう。
まとめ
Redis は高速な外部キャッシュです。Microsoft.Extensions.Caching.StackExchangeRedis をインストールし、Configuration の接続文字列を指定して AddStackExchangeRedisCache を呼び出します。必要に応じて InstanceName プレフィックスも指定できます。サービスでは引き続き IDistributedCache を変更せずに使用できます。環境ごとに構成を分け、回復性のために abortConnect=False を設定し、Redis のヘルスチェックを追加してください。
よくある質問
「Redisへの接続」レッスンは無料ですか?
はい。「Redisへの接続」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C# Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C# Academyコースには全4レッスンが含まれています。
「Redisへの接続」で何を学びますか?
Redis分散キャッシュを設定します。 ブラウザで直接実行するハンズオンコードでC# Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
C# Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのC# Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「Redisへの接続」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このC# Academyレッスンでコードを書いて実行できますか?
はい。すべてのC# Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。