原典:Azure: Redis Cache, Disaster Recovery to Azure, Tagging Support, Elastic Scale for SQLDB, DocDB
はじめに
ここ数日で、Microsoft Azureに非常に多くの拡張機能をリリースしました。
その中には、以下のものがあります。
- Redisキャッシュ:Redisキャッシュサービスの一般公開
- サイトリカバリ:Azureサイトリカバリを使用したAzureディザスタリカバリの一般公開
- 管理:Azureプレビューポータルでタグサポート
- SQL DB:Azure SQLデータベース弾性スケールのパブリックプレビュー(.NET lib、Azureサービステンプレートから利用可能)
- DocumentDB:ドキュメントエクスプローラ、コレクション管理、新しいメトリクスのサポート
- 通知ハブ:Baiduプッシュ通知サービスのサポート
- 仮想ネットワーク:Azureプレビューポータルで静的プライベートIPのサポート
- オートメーションのアップデート:Active Directory認証、PowerShellスクリプトコンバータ、ランブックギャラリー、1時間毎のスケジューリングサポート
上記の新機能はすべて現在使用可能です(注:まだプレビューのものもあります)。以下はその詳細になります。
Redisキャッシュ:Redisキャッシュサービスの一般公開
Azure Redisキャッシュの一般公開についてお知らせできうれしく思います。Azure Redisキャッシュサービスにより、Microsoftがサービスとして管理する安全/専用のRedisキャッシュが利用できます。Azure Redisキャッシュは、Azureアプリケーションに対する推奨の分散キャッシュソリューションです。
Redisキャッシュ
キーと値のペアのみを扱う通常のキャッシュとは異なり、Redisは高性能なデータタイプをサポートしていることで人気があり、例えば、文字列に付加、ハッシュで値をインクリメント、リストへのプッシュ、積集合、和集合、差の計算、ソートされたセット内の最高ランクメンバーの取得といったアトミック操作を実施できます。その他の特長として、トランザクション、パブリッシュ/サブスクライブ、Luaスクリプト、存続時間限定キー、Redisが通常キャッシュのように振る舞うようにする構成設定などがサポートされています。
最後に、Redisの周りにはいい状態で活気のあるオープンソースのエコシステムが構築されています。これは、複数の言語で利用できる多様なRedisクライアントに反映されています。これにより、AzureでホストしているWindowsまたはLinux上で実行中のほぼすべてのアプリケーションで使用できます。
Redisキャッシュのサイズとエディション
Azure Redisキャッシュサービスは、現在、250MB、1GB、2.8GB、6GB、13GB、26GB、53GBのサイズで提供されます。今後はさらに高メモリオプションをサポートする予定です。
各Redisキャッシュサイズオプションにも2つのエディションが提供されています。
- 基本-シングルキャッシュノード。正式なSLAがないため、開発/テストまたは重要でないワークロードでの使用をお勧めします。
- 標準-マルチノード。高可用のためにマスター/レプリカの2つのノードで構成されたレプリケーションキャッシュで、エンタープライズSLAに裏打ちされています。
標準エディションでは、2つのノード間のレプリケーションを管理し、マスターノードで障害が発生した場合(非計画的サーバー障害または計画的パッチ適用保守のどちらの場合も)に自動フェイルオーバーを実行します。これにより、キャッシュとその中に保存されたデータの可用性を確保することができます。Azure Redisキャッシュの価格の詳細は、Azureキャッシュ価格設定ページでご確認いただけます。価格は1ヶ月17ドルの低いところから開始されます。
新しいRedisキャッシュの作成と接続
Azureプレビューポータルを使用して、Redisキャッシュの新しいインスタンスを作成できます。New-Redis Cache項目を選択するだけで、新しいインスタンスが作成できます。
その後すでに準備したRedisキャッシュに接続する場合、幅広いプログラミング言語およびそれに対応するクライアントパッケージが使用できます。Azure Redisキャッシュサービスに接続する時と同じく、独自のRedisインスタンスに接続するために使用しているものと同じRedisのクライアントパッケージを使用することができます。APIとライブラリはまったく同じになります。
以下では.NET Redisクライアントを使用して、StackExchange.Redisを呼び出し、Azure Redisキャッシュインスタンスに接続します。まず、任意のVisual Studioプロジェクトを開き、NuGetパッケージマネージャでStackExchange.Redis NuGetパッケージを追加します。次に、Azureプレビューポータルで、キャッシュインスタンスに対して、プロパティブレードおよびキーブレードからそれぞれキャッシュエンドポイントとキーを取得します。
これらを検索したら、以下のコードでキャッシュに接続インスタンスを作成します。
var connection = StackExchange.Redis.ConnectionMultiplexer.Connect("contoso5.redis.cache.windows.net,ssl=true,password=...");
接続が確立されると、ConnectionMultiplexer.GetDatabaseメソッドを呼び出して、Redisキャッシュデータベースへの参照を取得します。
IDatabase cache = connection.GetDatabase();
アイテムは保存され、StringSetおよびStringGetメソッド(またはその非同期対応 - StringSetAsyncおよびStringGetAsync)を使用するとキャッシュから取得できます。
cache.StringSet("Key1", "HelloWorld"); cache.StringGet("Key1");
これでAzure上で実行されているRedisキャッシュインスタンスに“Hello World”文字列を保存し、取得できました。Azure Redisキャッシュを使用したエンドツーエンドアプリケーションの例については、MVCムービーアプリケーションブログ記事をご確認ください。
ASP.NETセッション状態と出力キャッシュにRedisを使用
また、プロセス外のASP.NETセッション状態の保存や、Webサーバインスタンス間の出力キャッシュコンテンツを共有するのに、Redisを利用することができます。
セッション状態にRedisを使用する方法については、このブログ記事、RedisのためのASP.NETセッション状態をご確認ください。
出力キャッシュにRedisを使用する方法については、このMSDN記事、Redisに対するASP.NET出力キャッシュをご確認ください。
監視とアラート
すべてのAzure Redisキャッシュインスタンスには、デフォルトでビルトインの監視サポートがあります。現在、キャッシュヒット、キャッシュミス、Get/Setコマンド、トータルオペレーション、排除キー、期限切れキー、使用メモリ、使用帯域幅、使用CPUなどを追跡できます。Azureプレビューポータルを使用すると、ビジュアルで簡単に確認できます。
メトリクスやイベント上でアラートを(上記の“Add Alert”ボタンをクリックして)作成することもできます。例えば、キャッシュが排除を確認した時にキャッシュ管理者に通知するアラートルールを作成するなどです。これは、キャッシュが多く実行されていて、メモリのスケールアップが必要であることを伝えるシグナルにもなります。
詳細について
Azure Redisキャッシュの詳細については、以下のリンクをご確認ください。
- Azureブログ:Azure Redisキャッシュ周り
- チャンネル9ビデオ:Redisキャッシュ101、102、103
- ホームページ:Azure Redisキャッシュ
- MSDNドキュメント:Azure Redisキャッシュ
- ご質問:Azureキャッシュフォーラム
- 機能リクエスト:Azure キャッシュユーザーボイス