Azure Redis Cache (プレビュー) の概要


このポストは、6 月 2 日に投稿した Lap around Azure Redis Cache (Preview) (著者: Saurabh Pant) の翻訳です。

マイクロソフトは、2014 年 5 月 12 日、Azure Redis Cache (プレビュー) のリリースを発表しました。

この新しい Cache サービスは、安全性の高い専用設計の Redis キャッシュ (英語) をマイクロソフトの管理下で使用できるようにするものです。このサービスを使用すると、Redis が提供するリッチな機能とエコシステムを活用できると同時に、マイクロソフトが提供する信頼性の高い、ホスティングと監視の機能をご利用いただけます。

今回の記事では、Azure Redis Cache の概要と、このサービスでご利用いただける主要な機能についてご紹介します。

また、これを第 1 回目の記事として、Azure Redis Cache に関する連載を行う予定です。ぜひ今後の「Redis Cache」というタグのブログ記事にご注目ください。今回は、Azure チームでプログラム マネージャーを務める Saurabh Pant の記事をご紹介します。

Redis

Redis.io のサイト (英語) では、Redis について「オープン ソースであり、BSD ライセンスの高度なキー/値ストアである。このキーには文字列、ハッシュ、リスト、セット、およびソート済みセットを含むことができるため、データ構造サーバーと呼ばれることもある」と記載されています。

キーと値の組み合わせのみを扱う従来のキャッシュとは異なり、Redis には、高パフォーマンスのデータ型を扱うことができるという特長があります。Redis では、これらの型に対して、文字列への追加、ハッシュ値のインクリメント、リストへのプッシュ、セットどうしの積、和、差の演算、ソート済みセットの中で最もランキングが高いメンバーの取得などの操作をアトミックに実行可能です。

他にも、トランザクションのサポート、pub/sub (パブリッシュ/サブスクライブ)、Lua スクリプト、有効期限付きキー、構成設定などの機能により、Redis を従来のキャッシュのように動作させることもできます。

Redis の開発者である Salvatore Sanfilippo 氏 (@antirez) は、「Redis にはさまざまな用途があります。簡単に表すと、Redis は従来型のデータベースとの中間にあるもので、演算をメモリ内で実行します。Redis では、コマンド セットがアクセスするメモリ内のデータの構造を公開しています」と述べています。詳細については、ご本人が執筆した Redis の使用例についてのブログ記事 (英語) をお読みください。

他に、Redis の成功の重要な要因として、Redis を中心として健全で活気のあるオープン ソースのエコシステムが構築されていることが挙げられます。さまざまな Redis クライアント (英語) のセットが多数の言語で提供されているのは、その成果の一例と言えます。

どのようなテクノロジでも決定的な成功の証となるのが、本番環境で使用しているユーザー (英語) です。このページを見ると、改めて Redis が高いレベルで成功を収めていることがわかります。

Windows Redis

Microsoft Open Technologies では、Redis を Windows ユーザーの皆様にご利用いただけるように、数年前から Windows 用 Redis (英語) の保守を行っています。

ご興味のある方は、GitHub リポジトリ (英語) を使用してプロジェクトの状況を追跡したり、構築作業を行ったり、プロジェクトに貢献することが可能です。また、NuGet パッケージ (英語) の Windows 互換 Redis サーバー (redis-server.exe) および Redis クライアント (redis-cli.exe) をバイナリ形式でダウンロードすることもできます。

Redis をローカルで実行する

このセクションでは、Redis のサーバーとクライアントをローカルで実行する方法について説明します。これは、Azure 向けの開発を中心に行っているユーザーの方にとっても、学習用、開発用、および診断用のリソースとして大いにお役立ていただけます。ただし、Azure Redis Cache について説明するうえではローカルの Redis サーバーおよびクライアントに関しては不要ですので、このセクションを飛ばしていただいてもかまいません。

Redis サーバー

Redis サーバーは、redis-serve.exe を実行するだけで、ローカルで起動できます。これで Redis サーバーが起動し、既定のポートでリッスンが開始されます。

Redis のコマンドラインクライアント

Redis クライアントは、redis-cli.exe を実行するだけで、ローカルで起動できます。クライアントは、起動後自動的にサーバーの既定のポートへの接続を行います。

クライアントで ping と入力すると、サーバーから pong という応答が返されます。

これで Redis コマンドを実行する準備が整いました。最初に次のコマンドを実行します。

set azureblog:firstset “Hello World”

get azureblog:firstset

Redis コマンド (英語) は、Redis の正常性を監視する INFO (英語) コマンドなどを含め、すべて redis-cli で実行できます。redis-cli は、開発用および診断用のツールとして非常に有用であるだけでなく、Redis コマンドについて学習する上でも非常に便利です。

Azure Redis Cache (プレビュー)

サイズ、料金、SKU

次の 2 つのレベルで Azure Redis Cache のプレビューをご利用いただけます。

Basic (基本) – キャッシュ ノードは 1 つ (開発およびテスト用、または重要度が低いワークロードに適しています)

Standard (標準) – キャッシュ ノードのレプリケーションが存在 (マスターとスレーブの 2 つのノードが存在します)

初期のプレビュー期間は、Azure Redis Cache のサイズは 250 MB および 1 GB です。これは今後増える予定です。また、しばらくの間は、サブスクリプション 1 つあたり 2 つまでのキャッシュを無料で提供します。

詳細については、Azure Cache の料金のページを参照してください。

Azure Redis Cache の第一歩

このセクションでは、Azure Redis Cache を作成し、その後 C# アプリケーションを接続します。

Azure Redis Cache を新規に利用開始する手順は簡単です。新しいキャッシュを作成するには、Azure 管理ポータル (プレビュー) にサインインして、[New][Redis Cache (Preview)] の順にクリックします。

Azure Redis Cache の作成方法の詳細については、MSDN のドキュメントをご覧ください。

新しいキャッシュのオプションの構成が完了したら、[Create] をクリックします。キャッシュが作成されるまでには数分ほどかかる場合があります。キャッシュが作成されたら、新しいキャッシュの状態が [Running] と表示され、既定の設定で使用できるようになります。

このキャッシュのエンドポイントとキーは、それぞれ Azure 管理ポータル (プレビュー) のキャッシュ インスタンスの [Properties] ブレードおよび [Keys] ブレードから取得できます。

これらを取得した後、redis-cli.exe を使用してキャッシュへの接続を確立します。

Redis C# クライアント

Redis では、複数の言語でさまざまなセットの Redis クライアント (英語) が提供されています。ここでは、C# の Redis クライアントである StackExchange.Redis を使用する場合の例を示します。

詳細については、StackExchange.Redis の GitHub のページ (英語) および StackExchange.Redis キャッシュ クライアントのドキュメント (英語) を参照してください。

Visual Studio で StackExchange.Redis NuGet パッケージを使用してクライアント アプリケーションを構成するには、[Solution Explorer] でプロジェクトを右クリックして、[Manage NuGet Packages] を選択します。

[Search Online] テキスト ボックスに StackExchange.Redis と入力し、その検索結果を選択して [Install] をクリックします。

NuGet パッケージにより、クライアント アプリケーションが StackExchange.Redis キャッシュ クライアントを使用して Azure Redis Cache にアクセスするために必要なアセンブリのリファレンスがダウンロードされ、追加されます。

プログラムからキャッシュを使用するために、まずはキャッシュへの接続を確立します。

最初に、使用する StackExchange.Redis クライアントの任意のファイルの冒頭に次の文を追加します。

using StackExchange.Redis;

Redis キャッシュへの接続は、ConnectionMultiplexer クラス インスタンスにより管理されます。このインスタンスはクライアント アプリケーション全体で共有および再利用されることを想定して設計されており、操作ごとに作成する必要はありません。

Azure Redis Cache に接続し、接続済みの ConnectionMultiplexer のインスタンスからの応答を取得するには、静的な Connect メソッドを呼び出してキャッシュのエンドポイントに渡します。

   ConnectionMultiplexer connection =

    ConnectionMultiplexer.Connect("contoso5.redis.cache.windows.net,ssl=true,password=... ");

接続が確立されたら、ConnectionMultiplexer.GetDatabase メソッドを呼び出して、Redis キャッシュ データベースへのリファレンスの応答を取得します。

   // connection は、事前構成済みの ConnectionMultiplexer を参照

   IDatabase cache = connection.GetDatabase();

Redis 内部のデータベースとは単にデータがグループ化されたもので、通常、アプリケーションが関連するデータを論理的にグループ化する場合に役立ちます。

StringSet メソッドおよび StringGet メソッドを使用すると、アイテムをキャッシュに格納したり、キャッシュから取得したりできます。

// key1 が存在する場合は、それを上書き

cache.StringSet("key1", "value1");

string value = cache.StringGet("key1");

StringGet を呼び出すと、そのオブジェクトが存在する場合はそれが返され、存在しない場合は null が返されます。ここでは、目的のデータ ソースから値を取得し、後からその値を使用するために、キャッシュにそれを保存しています。

string value = cache.StringGet("key1");

if (value == null)

{

   // "key1" というキーが指定されたアイテムがキャッシュ内に存在しない場合

   // 目的のデータ ソースからそれを取得してキャッシュに追加

   value = GetValueFromDataSource();

   cache.StringSet("key1", value);

}

To specify the expiration of an item in the cache, use the <code>TimeSpan</code> parameter of <code>StringSet</code>.

 

cache.StringSet("key1", "value1", TimeSpan.FromMinutes(90));

Azure Redis Cache では、基本的なデータ型と同様に .NET オブジェクトもキャッシュできますが、その場合は .NET オブジェクトがシリアル化されている必要があります。StackExchange.Redis では、アプリケーション開発者がシリアル化を行う必要があります。これは、アプリケーション開発者がシリアル化ツールを選択できるように柔軟性を確保するための仕様です。詳細については、「キャッシュ内で .NET オブジェクトを使用する」を参照してください。

これで、Azure Redis Cache への接続を確立し、Set 操作および Get 操作を実行できました。

ブログ記事「Azure Redis Cache の ASP.NET セッション状態プロバイダー (英語)」では、Azure Redis Cache で ASP.NET セッション状態を保存する方法の例が記載されていますので、ぜひご覧ください。

マイクロソフトがホストする Azure Redis Cache の特長

Azure Redis Cache では、安全性の高い専用設計の Redis キャッシュ (英語) をマイクロソフトの管理下でご利用いただけます。このサービスを使用すると、Redis が提供するリッチな機能とエコシステムを活用できると同時に、マイクロソフトが提供する信頼性の高い、ホスティングと監視の機能をご利用いただけます。

ここからは、マイクロソフトがホストする Redis の 2 つの主な特長について詳しく説明します。

- すぐに使用可能なレプリケーションを Azure Redis Cache の Standard (標準) SKU でサポート

- 監視機能およびアラート機能を組み込み済み

レプリケーション

Redis キャッシュ エンジンではマスター/スレーブ形式のレプリケーションがサポートされており、初回は非常に高速なノンブロッキングでの同期を実行し、またネット接続の切断時には自動的に再接続する機能が搭載されています。Azure Redis Cache はこの機能の上に構築されていて、Standard (標準) レベルのキャッシュのすべてでレプリケーションを提供しています。これにより、ノードの災害復旧が高速化され、データ損失も回避 (または最小限に低減) 可能で、キャッシュの可用性が大幅に向上しています。

内部的には、各 Standard (標準) SKU のキャッシュで 2 つのノード (マスターとスレーブ) をプロビジョニングし、Redis のレプリケーション機能でこの 2 つの同期を維持します。さらに、マスターではハートビートを常に行い、マスターの停止が検出されるとすぐに、スレーブをマスターに昇格させます。通常、キャッシュが使用不能になった場合、一瞬の中断が発生するだけで、極めて迅速に正常な状態に復旧されます。

監視とアラート

各 Azure Redis Cache では、キーのマトリックスが既定で監視されます。初期のプレビュー リリースでは、Cache Hits、Cache Misses、Get Commands、Set Commands、Evicted Keys、Expired Keys、Used Memory、Used CPU のそれぞれが追跡されます。今後数か月以内に、対象がさらに拡充される予定です。

監視対象のデータは、キャッシュ インスタンスのポータル ページに表示されます。ここでは、ユーザーが時間、日、週、または特定の時間範囲を選択して、データを確認できます。

データの表示の他に、ユーザーが定義した時間間隔内にユーザーが定義したしきい値に特定のメトリックが達した場合、アラートを発するように設定することもできます。

たとえば、キャッシュの削除が発生した際に、キャッシュの管理者にアラートで通知するように設定することができます。この場合、キャッシュの負荷が高く、より大きなサイズにアップグレードする必要があることを示しています。

ここまで、Azure Redis Cache の主要機能について簡単に説明しました。次のセクションでは、Azure Cache に関する関連情報をご紹介します。

このキャッシュ機能を皆様にご活用いただけますと幸いです。

関連情報

この機能の詳細をご希望の方は、次のリンク先の情報もご参照ください。

· Azure Cache のドキュメントのページ (英語)

· MSDN の Azure Cache のドキュメント

· Azure Cache のフォーラム – Azure Redis Cache に関する質問をご投稿いただけます。

· Azure Cache に関するよく寄せられる質問 (英語) – Azure Cache の種類の選び方について説明しています。

Comments (0)

Skip to main content