Redis
 Computer >> コンピューター >  >> プログラミング >> Redis

.NET Core で Redis 連携をマスターする:実践ガイド

はじめに

Redisは、高速なインメモリ型キーバリューストアであり、キャッシュ、セッション管理、メッセージブローカー、Pub/Sub(パブリッシュ/サブスクライブ)通信など、現代のアプリケーションで幅広く活用されています。軽量かつ高性能で開発者にとって扱いやすく、スケーラブルなシステム構築における定番の選択肢となっています。

.NET Coreで開発を行っていて、アプリケーションにRedisを組み込みたい方は、本記事でStackExchange.Redisライブラリを使った基本的なRedis操作の方法を学ぶことができます。

また、Windows環境で作業している方向けに、Linuxやコンテナ化を必要とせずにRedisを実行できるRedis互換サーバーの活用方法についてもご紹介します。

なぜRedisなのか?

Redisを.NET Coreアプリケーションと統合すると、次のようなメリットが得られます。

  1. キャッシュ: 頻繁にアクセスされるデータを保存することで、レスポンス時間を短縮し、データベースへの負荷を軽減します。
  2. セッション管理: 分散システムにおいて、ユーザーセッションを効率的に処理します。
  3. リアルタイムイベント: Pub/Sub機能を活用し、通知やイベント駆動型通信といったリアルタイム機能を実現します。
  4. 高性能: メモリ上で動作するため、低レイテンシでのデータアクセスが可能です。
  5. スケーラビリティ: クラスタリングやシャーディングをサポートしており、拡張性を考慮した設計になっています。

Redisのセットアップ

Redisの利用方法

.NET CoreアプリケーションをRedisに接続するには、以下のいずれかの方法でRedisを実行します。

  • コマンドラインからのインストール: Dockerなどのツールを使って、LinuxまたはWindows上でRedisを実行します。
  • 事前設定済みのWindows向け代替手段: Windows環境の場合は、Redis互換サーバーをネイティブなドロップイン代替として利用できます。

注意: 本チュートリアルでは簡単のため、Redisが localhost:6379 でローカル実行されていることを前提とします。

Redisを使った.NET Coreアプリケーションの構築

この例では、以下のRedis操作を行う.NET Coreコンソールアプリケーションを作成します。

  1. Redisサーバーへの接続
  2. 基本的なキーバリュー操作(set、get、delete)の実行
  3. キーの有効期限の設定と検証のデモンストレーション

ステップ1:.NET Coreプロジェクトの作成

  1. ターミナルを開き、新しいプロジェクトを作成します。

    dotnet new console -n RedisIntegrationDemo
  2. Redis接続用に、StackExchange.Redisパッケージをインストールします。

    dotnet add package StackExchange.Redis

ステップ2:コードの記述

Program.cs の完全な実装は以下の通りです。

using System;
using StackExchange.Redis;
using System.Threading.Tasks;
namespace RedisIntegrationDemo
{
 class Program
 {
 // Redis接続文字列
 private const string RedisConnectionString = "localhost:6379";
 async static Task Main(string[] args)
 {
 Console.WriteLine("Connecting to Redis...");
 // Redisに接続
 var redis = await ConnectionMultiplexer.ConnectAsync(RedisConnectionString);
 Console.WriteLine("Connected to Redis successfully.\n");
 // Redisデータベースへのアクセス
 IDatabase db = redis.GetDatabase();
 // Redis操作の実行
 Console.WriteLine("Performing Redis operations...");
 // 1. キーバリューのペアを設定
 string key = "SampleKey";
 string value = "Hello from Redis!";
 await db.StringSetAsync(key, value);
 Console.WriteLine($"Set: {key} => {value}");
 // 2. キーの値を取得
 string savedValue = await db.StringGetAsync(key);
 Console.WriteLine($"Get: {key} => {savedValue}");
 // 3. キーに有効期限を設定
 TimeSpan expiryTime = TimeSpan.FromSeconds(10);
 await db.KeyExpireAsync(key, expiryTime);
 Console.WriteLine($"Set expiration for {key}: {expiryTime.TotalSeconds} seconds");
 // 4. 有効期限切れ後にキーの存在を確認
 Console.WriteLine("\nWaiting for the key to expire...");
 await Task.Delay(12000); // 12秒待機
 bool exists = await db.KeyExistsAsync(key);
 Console.WriteLine($"Key Exists After Expiration: {key} => {exists}");
 // 接続を閉じる
 redis.Close();
 Console.WriteLine("\nAll Redis operations completed.");
 }
 }
}

ステップ3:アプリケーションの実行

アプリケーションを実行するには、以下のコマンドを使用します。

dotnet run

期待される出力

プログラムはRedisに接続し、基本的なキーバリュー操作を実行した後、キーの有効期限を検証します。以下のような出力が表示されます。

.NET Core で Redis 連携をマスターする:実践ガイド

.NET CoreにおけるRedisの仕組み

このアプリケーションが行っている処理を、順を追って見ていきましょう。

  1. ConnectionMultiplexer を使用してRedisサーバーに接続します。ConnectionMultiplexer は、接続プーリングとサーバー通信を管理する役割を担います。
  2. 基本的なコマンドを実行します。
    • StringSetAsync: Redisにキーバリューのペアを設定します。
    • StringGetAsync: 指定したキーの値を取得します。
    • KeyExpireAsync: キーに有効期限を設定します。
    • KeyExistsAsync: キーが存在するかどうかを確認します。
  3. 有効期限付きの一時的なインメモリデータ保存を処理します。

Windows環境で、ネイティブのRedisインスタンスのインストールやDockerの使用を避けたい場合は、Redis互換サーバーを代わりに利用できます。

Redis互換サーバーのセットアップ

  • Windows用のRedis互換サーバーをインストールします。
  • インストール後、サーバーは通常、Redisと同様にデフォルトで localhost:6379 で起動します。
  • Redis互換サーバーで動作させるために、アプリケーション側のコード変更は一切不要です。

Redis互換サーバーを利用することで、コンテナや仮想化環境に依存することなく、Windows上でRedisの機能をネイティブに実行できます。

.NET CoreでRedisを使うメリット

  1. パフォーマンス: Redisは完全にメモリ上で動作するため、極めて低いレイテンシを実現します。
  2. 使いやすさ: 一般的なキーバリュー操作のためのシンプルなAPIに加え、リスト、セット、ハッシュなどの多彩なデータ構造も利用できます。
  3. 柔軟性: キャッシュ、メッセージキュー、Pub/Subなど、複数の用途に対応できる万能性を持っています。
  4. スケーラビリティ: クラスタリングと高可用性をサポートしており、需要の増加に応じたスケールが可能です。

まとめ

.NET CoreアプリケーションにRedisを統合することで、高負荷なワークロードにも耐えられる、高品質かつ高性能なシステムを構築できます。StackExchange.Redisライブラリを使えば、Redisとのやり取りをシームレスに行うことが可能です。

まずはシンプルなキャッシュやセッション管理からRedisの導入を始め、その後、分散型の.NET CoreアプリケーションにおけるPub/Subやリアルタイムデータのニーズへと活用範囲を広げていきましょう。

それでは、楽しいコーディングとスケーリングを!

  1. Redisキーの基本と管理コマンド一覧|DEL・EXPIRE・TTLなどの使い方を解説

    Redisにおけるキー(Key)は、データベースに格納された値を識別・保存・取得するための一意な識別子として機能します。キーはredis-cliから各種Redisコマンドを実行することで自由に管理でき、値の追加・削除だけでなく、有効期限の設定や名前の変更なども行えます。 本記事では、Redisのキー操作に使われる代表的なコマンドを一覧形式で解説します。日々の開発や運用でキーを扱う際のリファレンスとしてご活用ください。 基本構文 Redisのキーコマンドは、以下の形式で記述します。 redis host:port> <コマンド名> <キー名> 実行例 Redisキ

  2. Redis活用に役立つ包括的ハウツーガイド&チュートリアル集

    Redis活用に役立つ包括的ハウツーガイド&チュートリアル集Redisを最大限に活かしたい開発者のために、実践的なハウツーガイドとチュートリアルを厳選してまとめました。AI時代の必須技術であるRAGパイプラインの構築から、アプリのパフォーマンス改善、Kubernetesとの連携、データ移行まで、幅広いトピックを網羅しています。テーマ別に整理しているので、今取り組んでいる課題に合った記事をすぐに見つけられます。AI・RAG関連の最新チュートリアル(2025年)ゼロから始めるRAG:RedisVLで初めてのRAGパイプラインを構築するカテゴリ:ハウツー&チュートリアル|公開日:2025年2月3日テ