tl; dr:Elasticacheは、redisの単一インスタンスを使用するように強制しますが、これは最適ではありません。
長いバージョン:
これは古い投稿(この記事の執筆時点では2年)だと思いますが、ここに表示されていない点に注意することが重要だと思います。
Elasticacheでは、redisのデプロイはAmazonによって管理されます。これは、彼らがあなたのredisを実行することを選択したにもかかわらず、あなたが立ち往生していることを意味します。
Redisは、読み取り/書き込みに単一の実行スレッドを使用します。これにより、ロックなしの一貫性が保証されます。ロックとラッチを管理しないことは、パフォーマンスの面で大きな資産です。ただし、残念な結果として、EC2に複数のvCPUがある場合、それらは未使用になります。これは、複数のvCPUを備えたすべてのelasticacheインスタンスに当てはまります。
デフォルトのelasticacheインスタンスサイズはcache.r3.large
です。 、2つのコアがあります。
実際、複数のvCPUを使用するインスタンスサイズは多数あります。この問題が顕在化する機会はたくさんあります。
アマゾンはすでにこの問題を認識しているようですが、彼らはそれを少し否定しているようです。
これをこの質問に特に関連させる部分は、EC2で(独自のデプロイを管理しているため)マルチテナンシーを実装できることです。 。これは、異なるポートでリッスンしているredisプロセスのインスタンスが多数あることを意味します。レコードのキーのハッシュに基づいてアプリケーションで読み取り/書き込み/書き込みを行うポートを選択することで、すべてのvCPUを活用できます。
補足として;マルチコアマシンでのrediselasticacheデプロイメントは、インスタンスサイズでのmemcachedelasticacheデプロイメントと比較して常にパフォーマンスが低下している必要があります。マルチテナンシーでは、redisが勝者になる傾向があります。
更新:
Amazonは、redisインスタンスCPU、EngineCPUUtilizationに個別のメトリックを提供するようになりました。粗雑な乗算を使用してCPUを計算する必要はなくなりましたが、マルチテナンシーはまだ実装されていません。