全般的なベストプラクティス
以下に、ElastiCache 内で Valkey、Memcached、および Redis OSS のインターフェースを使用するためのベスト プラクティスに関する情報を示します。
クラスターモード対応の構成を使用する — クラスターモードを有効にすると、キャッシュを水平方向にスケールして、クラスターモードを無効にした構成よりもストレージとスループットを向上できます。ElastiCache サーバーレスは、クラスターモードが有効な構成でのみ使用できます。
存続期間の長い接続を使用する — 新しい接続の作成にはコストと時間がかかり、キャッシュの CPU リソースが消費されます。できれば (接続プーリングなどで) 接続を再利用して、こうしたコストを多くのコマンドで分担します。
レプリカから読み取る — ElastiCache サーバーレスを使用している場合や、リードレプリカ (ノードベースのクラスター) をプロビジョニングしている場合は、読み取りをレプリカに転送してスケーラビリティを向上し、レイテンシーを軽減させます。レプリカからの読み取りには、プライマリとの結果整合性があります。
ノードベースのクラスターでは、読み取りリクエストの転送先を単一のリードレプリカに限定しないでください。そのノードで障害が起きると、一時的に読み取りができなくなる可能性があります。読み取りリクエストを少なくとも 2 つのリードレプリカに転送するか、1 つのレプリカとプライマリに転送するようにクライアントを設定してください。
ElastiCache サーバーレスでは、レプリカポート (6380) からの読み取りは、可能な限りクライアントのローカルアベイラビリティーゾーンに転送されるため、取得レイテンシーが軽減されます。障害発生時には、自動的に他のノードにフォールバックします。
コストの高いコマンドを避ける –
KEYSやSMEMBERSコマンドのような、計算コストが高いオペレーションや入出力量の多いオペレーションを避けてください。これらのオペレーションでは、クラスターへの負荷が増えてクラスターのパフォーマンスに影響するため、これらを避けるアプローチをお勧めします。代わりに、SCANコマンドおよびSSCANコマンドを使用します。Lua のベストプラクティスに従う – 長時間実行する Lua スクリプトを避け、常に Lua スクリプトで使用されているキーを前に宣言します。Lua スクリプトがクロススロットコマンドを使用していないことを確認するために、この方法をお勧めします。Lua スクリプトで使用されるキーが同じスロットに属していることを確認します。
シャードされた pub/sub を使用する — Redis OSS を使用して高スループットの Pub/Sub ワークロードをサポートする場合は、シャードされた Pub/Sub
(Valkey、Redis OSS 7 以降で利用可能) の使用をお勧めします。クラスターモードが有効なクラスターにおける従来の Pub/Sub は、クラスター内のすべてのノードにメッセージをブロードキャストするため、 EngineCPUUtilizationが高くなる可能性があります。ElastiCache サーバーレスでは、従来の Pub/Sub コマンドは内部的には、シャードされた Pub/Sub コマンドを使用する点に注意してください。