Azure Cache for Redis 開発に関してよくあるご質問

この記事では、Azure Cache for Redis の開発に役立つ、よくある質問に対する回答について説明します。

Azure Cache for Redis の使用を開始する方法

Azure Cache for Redis の使用を開始する方法はいくつかあります。

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 portal からホスト名、ポート、アクセス キーを取得する

Azure Cache for Redis サーバーに接続するには、キャッシュ クライアントにキャッシュのホスト名、ポート、およびキーが必要です。 クライアントによっては、これらの項目を参照するための名前が若干異なる場合があります。 ホスト名、ポート、およびキーは Azure portal から取得できます。

  • アクセス キーを取得するには、[リソース] メニューから [認証] を選択します。 その後、[アクセス キー] タブを選択します。

    Azure Cache for Redis のキー

  • キャッシュのホスト名とポートを取得するには、[リソース] メニューから [概要] を選択します。 ホスト名は、<DNS 名>.redis.cache.windows.net の形式になります。

    Azure Cache for Redis のプロパティ

Azure Cache for Redis のローカル エミュレーターの有無について

Azure Cache for Redis にはローカル エミュレーターがありません。 ローカル コンピューターの Redis コマンドライン ツールから redis-server.exe の MSOpenTech バージョンを実行できます。 その後それに接続すると、次の例のように、ローカル キャッシュ エミュレーターと同じような体験が得られます。

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;
    }
}

必要に応じて、オンラインの Azure Cache for Redis の既定のキャッシュ設定とより正確に一致するように、redis.conf ファイルを構成します。

Redis コマンドの実行方法

Azure Cache for Redis でサポートされない Redis コマンドに関するセクションに示されているコマンドを除き、Redis コマンドのページに示されているすべてのコマンドを使用できます。 Redis コマンドを実行するにはオプションがいくつかあります。

Standard または Premium キャッシュがある場合は、 Redis コンソールを使用して Redis コマンドを実行できます。 Redis コンソールは、Azure Portal で Redis コマンドを安全に実行するための方法です。

Redis コマンド ライン ツールを使用することもできます。 これらを使用するには、次の手順を実行します。

  1. Redis コマンド ライン ツールをダウンロードします。

  2. redis-cli.exeを使用してキャッシュに接続します。

  3. 次の例に示すように、-h スイッチを使用してキャッシュ エンドポイントを渡し、-a を使用してキーを渡します。

    redis-cli -h <Azure Cache for Redis name>.redis.cache.windows.net -a <key>

Note

Redis コマンド ライン ツールは TLS ポートを使用できません。ただし、stunnel などのユーティリティを使用すると、ツールを TLS ポートに安全に接続することができます。詳細については、ブログ記事「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 のよくあるご質問について。