次の方法で共有


Azure Managed Redis (プレビュー) のクライアント ライブラリ

Azure Managed Redis (プレビュー) は、広く普及しているインメモリ データ ストアである Redis がベースとなっています。 Azure Managed Redis には、多くのプログラミング言語のさまざまな Redis クライアントからアクセスできます。 各クライアント ライブラリには、Redis コマンドを使用して Redis サーバーを呼び出す独自の API がありますが、クライアント ライブラリは任意の Redis サーバーと通信するように構築されています。

各クライアント ライブラリでは、独自のリファレンス ドキュメントが保持されています。 これらのライブラリには、クライアント ライブラリ開発者コミュニティを通じてサポートを受けるためのリンクも用意されています。 Azure Managed Redis チームは、クライアント ライブラリの開発やサポートを所有していません。

以下のおすすめは、人気度と、質問に対してサポートし、回答するアクティブなオンライン コミュニティがあるかどうかに基づいています。 利用可能な最新バージョンのみを使用し、新しいバージョンが利用可能になったら定期的にアップグレードすることをお勧めします。 これらのライブラリは活発に開発されており、多くの場合、信頼性とパフォーマンスが向上した新しいバージョンがリリースされています。

クライアント ライブラリ Language GitHub リポジトリ ドキュメント
StackExchange.Redis C#/.NET リンク 詳細については、こちらを参照してください
Lettuce Java リンク 詳細については、こちらを参照してください
Jedis Java リンク
node_redis Node.js リンク
Redisson Java リンク 詳細については、こちらを参照してください
ioredis Node.js リンク 詳細については、こちらを参照してください

Note

アプリケーションでは、オープンソースの Redis と互換性のある任意のクライアント ライブラリを使用して、Azure Managed Redis インスタンスに接続できます。

クラスタリング ポリシーに基づいて適切なクライアント ライブラリを選択する

Azure Managed Redis では、Enterprise クラスタリング ポリシーと OSS クラスタリング ポリシーがサポートされています。 詳細については、こちら (クラスタリング ポリシー情報へのリンクの追加) を参照してください。 すべてのクライアント ライブラリは、Enterprise クラスタリング ポリシーを持つ Redis インスタンスで動作します。 ただし、OSS クラスタリング ポリシーを使用している場合は、選択したクライアント ライブラリがクラスター化された Redis インスタンスへの接続をサポートしていることを確認してください。

ブロックされているコマンド

Azure Managed Redis インスタンスの構成と管理は Microsoft によって管理されており、次のコマンドは既定で無効になっています。 ブロックされているコマンドの詳細については、「クラスター管理コマンドの互換性」を参照してください。

マルチキー コマンド

AMR インスタンスではクラスター化された構成が使用されるため、複数のキーで動作するコマンドに CROSSSLOT 例外が表示される場合があります。 動作は使用されるクラスタリング ポリシーによって異なります。 OSS クラスタリング ポリシーを使用する場合、マルチキー コマンドでは、すべてのキーを同じハッシュ スロットにマップする必要があります。

Enterprise クラスタリング ポリシーで CROSSSLOT エラーが表示される場合もあります。 Enterprise クラスタリングを使用するスロットでは、DELMSETMGETEXISTSUNLINKTOUCH のマルチキー コマンドのみを使用できます。

アクティブ/アクティブ データベースでは、マルチキー書き込みコマンド (DELMSETUNLINK) は、同じスロット内のキーに対してのみ実行できます。 ただし、次のマルチキー コマンドは、アクティブ/アクティブ データベース内のスロット間で許可されます: MGETEXISTS、および TOUCH。 詳細については、「データベース クラスタリング」を参照してください。

Enterprise クラスタリング ポリシーに対するブロックされているコマンド

  • CLUSTER INFO
  • CLUSTER HELP
  • CLUSTER KEYSLOT
  • CLUSTER NODES
  • CLUSTER SLOTS

アクティブ geo レプリケーションに対するブロックされているコマンド

  • FLUSHALL
  • FLUSHDB

クライアント ライブラリ固有のガイダンス

クライアント ライブラリ固有のガイダンスのベスト プラクティスについては、次のリンクを参照してください。

Redisson (Java)

redisson 3.14.1 以降を使用することを "お勧めします"。 以前のバージョンには、フェールオーバー後の問題につながる接続リークの問題が確認されています。 その他、アプリケーションで使用している機能に影響を及ぼすおそれのある既知の問題については、Redisson の変更ログを随時確認してください。 詳細については、CHANGELOG および Redisson の FAQ を参照してください。

その他の注意事項:

  • Redisson は他のクライアントとは異なり、"レプリカからの読み取り" が既定の方式です。 これを変更するには、"readMode" 構成設定を変更します。
  • Redisson の接続プール方式には、構成可能な最小と最大の設定があり、既定の最小値が大きすぎます。 大きな既定値が、積極的な再接続動作 ("接続ストーム") につながるおそれがあります。 そのリスクを軽減するために、使用する接続の数を減らすことを検討してください。少数の接続でも、コマンドまたはコマンドのバッチを効率的にパイプライン化することができます。
  • Redisson の既定のアイドル接続タイムアウトは 10 秒ですが、その場合、接続を閉じて再度開く頻度が、理想と比べて多くなります。

次に示したのはクラスター モードに推奨されるベースライン構成です。必要に応じて変更を加えてください。

clusterServersConfig:
  idleConnectionTimeout: 30000
  connectTimeout: 15000
  timeout: 5000
  retryAttempts: 3
  retryInterval: 3000
  checkLockSyncedSlaves: false
  failedSlaveReconnectionInterval: 15000
  failedSlaveCheckInterval: 60000
  subscriptionsPerConnection: 5
  clientName: "redisson"
  loadBalancer: !<org.redisson.connection.balancer.RoundRobinLoadBalancer> {}
  subscriptionConnectionMinimumIdleSize: 1
  subscriptionConnectionPoolSize: 50
  slaveConnectionMinimumIdleSize: 2
  slaveConnectionPoolSize: 24
  masterConnectionMinimumIdleSize: 2
  masterConnectionPoolSize: 24
  readMode: "MASTER"
  subscriptionMode: "MASTER"
  nodeAddresses:
  - "redis://mycacheaddress:10000"
  scanInterval: 1000
  pingConnectionInterval: 60000
  keepAlive: false
  tcpNoDelay: true

Azure 上の IBM Liberty の HTTP セッション状態のストアとして Redisson の JCache のサポートを使用する方法を示す記事については、「Azure Kubernetes Service (AKS) クラスターで、Java EE JCache と Open Liberty または WebSphere Liberty を使用する」を参照してください。

クライアント ライブラリの使用方法

リファレンス ドキュメントのほかに、さまざまな言語とキャッシュ クライアントを使用して Azure Managed Redis を使用する方法を示すチュートリアルもあります。

チュートリアルでこれらのクライアント ライブラリの一部を使用する方法の詳細については、次の記事を参照してください。

次のステップ