この記事では、Azure Cache for Redis の開発に役立つ、よくある質問に対する回答について説明します。
Azure Cache for Redis の使用を開始する方法
Azure Cache for Redis の使用を開始する方法はいくつかあります。
- .NET、ASP.NET、Java、Node.js、Python で使用可能なチュートリアルのいずれかを確認できます。
- Microsoft Azure Cache for Redis を使用して高パフォーマンス アプリケーションを構築する方法のビデオを見ることができます。
- プロジェクトで使用する開発言語と一致するサンプル クライアントについては、クライアント ドキュメントで確認できます。 Azure Cache for Redis で使用できる Redis クライアントは多数あります。 Redis クライアントの一覧については、「https://redis.io/clients」を参照してください。
Azure アカウントをお持ちでない場合は、次の操作を行います。
- 無料で Azure アカウントを開きます。 Azure の有料サービスを試用できるクレジットが提供されます。 このクレジットを使い切ってもアカウントは維持されるため、無料の Azure サービスと機能をご利用になれます。
- Visual Studio サブスクライバーの特典を有効にします。 MSDN サブスクリプションにより、有料の Azure サービスを利用できるクレジットが毎月与えられます。
StackExchange.Redis 構成オプションについて
StackExchange.Redis には多くのオプションが用意されています。 ここでは、いくつかの一般的な設定について説明します。 StackExchange.Redis オプションの詳細については、 StackExchange.Redis の構成に関するページを参照してください。
構成オプション | 説明 | 推奨 |
---|---|---|
AbortOnConnectFail | true の場合、ネットワーク障害の後に再接続できません。 | StackExchange.Redis が自動的に再接続するように、false に設定します。 |
ConnectRetry | 初期接続中に接続試行を繰り返す回数。 | 次の注意事項を参考にしてください。 |
ConnectTimeout | 接続操作のタイムアウト (ミリ秒単位)。 | 次の注意事項を参考にしてください。 |
通常は、クライアントの既定値で十分です。 ワークロードに基づいてオプションを微調整できます。
再試行
- 一般的に ConnectRetry と ConnectTimeout に関しては、フェイル ファストして再試行することをお勧めします。 これは、ワークロードと、クライアントが Redis コマンドを発行してから応答を受け取るまでに要する時間の平均に基づいたガイダンスです。
- 自分で接続の状態を確認して再接続するのではなく、StackExchange.Redis が自動的に再接続するように設定します。 ConnectionMultiplexer.IsConnected プロパティは使用しません。
- 問題の肥大化 - ある問題が発生し、再試行によって問題が肥大化して、解決しないことがあります。 問題の肥大化が発生した場合は、Microsoft Patterns & Practices グループ発行の再試行の一般的なガイダンスに関する記事で説明されている指数バックオフ再試行アルゴリズムの使用を検討してください。
タイムアウト値
ワークロードを考慮したうえで、それに見合う値を設定します。 大きな値を保存する場合は、タイムアウトを大きな値に設定します。
StackExchange.Redis が再接続できるように、
AbortOnConnectFail
を false に設定します。要求ごとに新しい接続を作成するのではなく、有効期間が長い1つの
ConnectionMultiplexer
インスタンスを使用します。 接続を管理する方法の例については、「RedisConnection を使用したキャッシュへの接続」のRedisConnection
クラスを参照してください。診断用には、
ConnectionMultiplexer.ClientName
プロパティを、アプリ インスタンスの一意な名前に設定します。カスタム ワークロードに対しては複数の
ConnectionMultiplexer
インスタンスを使用します。アプリケーション内の負荷がさまざまである場合に、このモデルに従うことができます。 次に例を示します。
- 1 つのマルチプレクサーを使用して、サイズの大きなキーを処理できます。
- 1 つのマルチプレクサーを使用して、サイズの小さなキーを処理できます。
- 使用する
ConnectionMultiplexer
ごとに、異なる接続タイムアウトの値と再試行ロジックを設定できます。 - 診断を容易にするために、各マルチプレクサーで
ClientName
プロパティを設定します。
このガイダンスに従うことで、
ConnectionMultiplexer
ごとの待機時間がより合理化される場合があります。
使用可能な Azure Cache for Redis クライアントについて
Redis のメリットの 1 つが、クライアントが多数存在しており、さまざまな開発言語を多数サポートしている点です。 現在のクライアントの一覧については、 Radis クライアントに関するページをご覧ください。 さまざまな言語とクライアントを取り上げたチュートリアルについては、「Azure Cache for Redis の使用方法」を参照してください。
ホスト名、ポート、アクセス キーを取得する
Azure Cache for Redis サーバーに接続するために、キャッシュ クライアントはキャッシュのホスト名、ポート、アクセス キーを必要とします。 一部のクライアントは、これらの項目を若干異なる名前を使用して参照している場合があります。 ホスト名、ポート、キーは Azure portal で取得できます。
キャッシュのアクセス キーを取得するには:
- Azure portal で、キャッシュに移動します。
- サービス メニューの [設定] で、[認証] を選択します。
- [認証] ペインで、[アクセス キー] タブを選択します。
- アクセス キーの値をコピーするには、キー フィールドの [コピー] アイコンを選択します。
キャッシュのホスト名とポートを取得するには:
- Azure portal で、キャッシュに移動します。
- サービス メニューで、[概要] を選択します。
- [基本] の [ホスト名] で、[コピー] アイコンを選択してホスト名の値をコピーします。 ホスト名の値の形式は
<DNS name>.redis.cache.windows.net
です。 - [ポート] で、[コピー] アイコンを選択してポートの値をコピーします。
Azure Cache for Redis のローカル エミュレーターの有無について
Azure Cache for Redis にはローカル エミュレーターがありません。 ただし、次の例に示すように、ローカル コンピューターでコミュニティ Redis のコピーを実行し、それに接続して、ローカル キャッシュ エミュレーターと同様のエクスペリエンスを得ることができます。
private static Lazy<ConnectionMultiplexer>
lazyConnection = new Lazy<ConnectionMultiplexer> (() =>
{
// Connect to a locally running instance of Redis to simulate
// a local cache emulator experience.
return ConnectionMultiplexer.Connect("127.0.0.1:6379");
});
public static ConnectionMultiplexer Connection
{
get
{
return lazyConnection.Value;
}
}
Redis は Linux 上でネイティブに実行されますが、Linux 用 Windows サブシステムを使用して Windows マシン上で Redis を実行することもできます。 詳細については、「Install Redis on Windows」 (Windows への Redis のインストール) を参照してください。必要に応じて、オンライン Azure Cache for Redis の既定のキャッシュ設定とより厳密に一致するように redis.conf ファイルを構成できます。
Redis コマンドの実行方法
Azure Cache for Redis でサポートされない Redis コマンドに関するセクションに示されているコマンドを除き、Redis コマンドのページに示されているすべてのコマンドを使用できます。 Redis コマンドを実行するにはオプションがいくつかあります。
Standard または Premium キャッシュがある場合は、 Redis コンソールを使用して Redis コマンドを実行できます。 Redis コンソールは、Azure Portal で Redis コマンドを安全に実行するための方法です。
Redis コマンド ライン ツールを使用することもできます。 これらを使用するには、「Azure Cache for Redis での Redis コマンドライン ツールの使用」を参照してください
Azure Cache for Redis の MSDN クラス ライブラリ リファレンスが提供されない理由
Microsoft Azure Cache for Redis は、広く普及しているオープン ソースのインメモリ データ ストアである Redis がベースとなっています。 多くのプログラミング言語にさまざまな Redis クライアントを使用できます。 各クライアントは、Redis コマンドを使用して Azure Cache for Redis インスタンスを呼び出す独自の API を持ちます。
各クライアントが異なるため、MSDN には、1 つに集約されたクラス参照がありません。 各クライアントで独自の参照ドキュメントが保持されます。 リファレンス ドキュメントのほかに、チュートリアルもいくつか用意されています。チュートリアルでは、さまざまな言語とキャッシュ クライアントを使用して Azure Cache for Redis を使用する方法について説明します。 これらのチュートリアルについては、Azure Cache for Redis の使用方法に関するページとその関連記事を目次から見つけて参照してください。
Azure Cache for Redis を PHP セッションのキャッシュとして使用できるか
はい。Azure Cache for Redis を PHP セッションのキャッシュとして使用するには、session.save_path
に Azure Cache for Redis インスタンスへの接続文字列を指定します。
重要
Azure Cache for Redis を PHP セッションのキャッシュとして使用する場合、次の例に示すように、キャッシュへの接続に使用するセキュリティ キーを URL エンコードする必要があります。
session.save_path = "tcp://mycache.redis.cache.windows.net:6379?auth=<url encoded primary or secondary key here>";
キーが URL エンコードされていない場合、Failed to parse session.save_path
のようなメッセージの例外が表示されます。
Azure Cache for Redis を PhpRedis クライアントで PHP セッションのキャッシュとして使用する方法の詳細については、PHP セッション ハンドラーに関するページを参照してください。
Redis データベースとは
Redis データベースとは、単に同じ Redis インスタンス内でデータを論理的に切り離したものです。 キャッシュ メモリは、すべてのデータベースで共有され、特定のデータベースの実際のメモリ使用量は、そのデータベースに格納されているキー/値によって異なります。 たとえば、C6 キャッシュは 53 GB のメモリを備え、P5 の場合は 120 GB になります。 この 53 GB/120 GB すべてを 1 つのデータベースに配置することも、複数のデータベースに分割することもできます。
Note
クラスタリングを有効にして Premium Azure Cache for Redis を使用すると、使用できるのはデータベース 0 だけになります。 これは Redis に固有の制限事項です。Azure Cache for Redis の制限事項ではありません。
関連するコンテンツ
その他の Azure Cache for Redis のよくあるご質問について。