共通 ElastiCache ユースケースと方法 ElastiCache 支援できる - Redis 用 Amazon ElastiCache

「翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。」

共通 ElastiCache ユースケースと方法 ElastiCache 支援できる

最新のニュース、トップ10のリーダーボード、製品カタログ、イベントのチケット販売など、スピードはゲームの名前です。ウェブサイトとビジネスの成功は、コンテンツの配信速度に大きく左右されます。

"内無駄なウェブユーザーの場合、アイブリンクが長すぎて待つことができません」とニューヨーク・タイムズは指摘し、ユーザーは競合サイト間で250ミリ秒(1/4秒)の差を登録できると述べました。利用者は、より速いサイトを優先して、より遅いサイトをオプトアウトする傾向があります。Amazonで実施された試験。 ウェブページの読み込み時間がビジターの損失にどのように関連しているかでは、ロード時間が 100 ms (1/10 秒) 増加するごとに売上が 1 パーセント減少することが明らかになりました。

誰かがデータを必要としている場合、キャッシュされていれば、そのデータをはるかに高速に配信できます。これは、Webページであれ、ビジネス上の意思決定を促すレポートであれ、正しいことです。ビジネス上、できる限り短いレイテンシーでウェブページを配信するためにウェブページをキャッシュしないでいられることがあるでしょうか。

最もリクエストの多いアイテムをキャッシュしたいのは、直感的にわかるように思われるかもしれません。しかし、リクエスト頻度の低い項目をキャッシュしないでいいのでしょうか。最も最適化されたデータベースクエリまたはリモートAPI呼び出しでさえ、メモリ内キャッシュからフラットキーを取得するよりも明らかに遅いです。著しく時間がかかると、顧客を他社に取られてしまいます。

次の例で、ElastiCache を使用してアプリケーションの全体的なパフォーマンスを向上させるいくつかの方法を説明します。

インメモリデータストア

インメモリキー値ストアの主な目的は、データのコピーに超高速 (ミリ秒以下のレイテンシー) で低コストなアクセスを提供することです。ほとんどのデータストアには、頻繁にアクセスされてもほとんど更新されることのないデータ領域があります。さらにデータベースのクエリは、キーと値のペアのキャッシュを検索するよりも常に時間がかかり、キーの検索にコストがかかります。一部のデータベースクエリは、実行に特にコストがかかります。たとえば、複数のテーブルにまたがる結合や、集中的な計算を伴うクエリが関与するクエリがあります。このようなクエリ結果をキャッシュすることで、クエリの価格は 1 回だけ支払うことになります。その後、クエリを再実行しなくても、データを複数回すばやく取得できます。

キャッシュの方法。

キャッシュするデータを決める場合は、以下の点を考慮してください。

スピードと費用 – データベースからデータを取得するのは、キャッシュからの取得より、常に遅く、コストもかかります。データベースのクエリによっては、本質的により低速で高コストのものもあります。たとえば、複数のテーブルで結合を実行するクエリは、単純な単一テーブル クエリよりもはるかに遅く、高価です。興味深いデータの取得に低速で高価なクエリが必要な場合、キャッシュの候補になります。データの取得に比較的迅速で簡単なクエリーが必要な場合、他の要因によっては、依然としてキャッシュの候補になる可能性があります。

データとアクセスパターン – また、キャッシュ対象の決定には、データ自体とそのアクセス・パターンの理解も含まれます。たとえば、急速に変化するデータやアクセスされることがほとんどないデータをキャッシュするのは意味がありません。キャッシングによって真のメリットを提供するには、データは比較的静的で、頻繁にアクセスする必要があります。例として、ソーシャルメディアサイトの個人プロフィールが挙げられます。一方で、データをキャッシュしても速度やコスト面でメリットがない場合は、キャッシュしません。たとえば、クエリと結果は通常一意であるため、検索結果を返すウェブページをキャッシュするのは意味がありません。

陳腐化 – 定義上、キャッシュされたデータは古いデータです。状況によっては、古くない場合もありますが、常に古くならないように考え、扱います。データがキャッシュの候補であるかどうかを確認するには、アプリケーションの古いデータに対する許容誤差を決定します。

アプリケーションでは、あるコンテキストで古いデータを許容できても、別のコンテキストでは許容できない場合もあります。たとえば、サイトが上場株価を提供しているとします。顧客は、価格を n 分遅れています。しかし、売買を行うブローカーにその株価を提供する場合、リアルタイムのデータが必要です。

次の条件に該当する場合は、データをキャッシュすることを検討してください。

  • キャッシュの取得と比較して、データの取得に時間がかかるか、コストがかかります。

  • ユーザーは頻繁にデータにアクセスします。

  • データは比較的同じままです。あるいは、データの変更が急速に遅れても、大きな問題ではありません。

詳細については、以下を参照してください。

ゲームのリーダーボード (Redis ソートセット)

Redisソートセットは、リーダーボードの計算の複雑さをアプリケーションからRedisクラスタに移動します。

リーダーボードは、ゲームの上位 10 のスコアなど、計算上複雑です。これは特に、多数のコンカレント・プレイヤーが存在し、スコアが継続的に変化する場合に当てはまります。Redis ソートセットは、一意性と要素の順番を保証します。Redis ソートセットを使用すると、ソートセットに新しい要素が追加されるたびに、リアルタイムで再ランキングが行われます。その後、正しい番号順でセットに追加されます。

次の図を見ると、Redis 用 ElastiCache のゲームのリーダーボードがどのように動作するかがわかります。

画像: Redis 用 ElastiCache ゲームのリーダーボード図

例 - Redis リーダー ボード

この例では、4人のゲーマーとそのスコアが、 ZADD. コマンド ZREVRANGEBYSCORE は、スコアが高いプレイヤーから低いプレイヤーの順にリストします。次に、ZADDを使用して既存のエントリを上書きして、June のスコアを更新します。最後に ZREVRANGEBYSCORE は、スコアが高いプレイヤーから低いプレイヤーの順にリストします。このリストは、6月がランキングで上昇していることを示しています。

ZADD leaderboard 132 Robert ZADD leaderboard 231 Sandra ZADD leaderboard 32 June ZADD leaderboard 381 Adam ZREVRANGEBYSCORE leaderboard +inf -inf 1) Adam 2) Sandra 3) Robert 4) June ZADD leaderboard 232 June ZREVRANGEBYSCORE leaderboard +inf -inf 1) Adam 2) June 3) Sandra 4) Robert

次のコマンドで、6 月の全プレイヤーの順位が決まります。ランク付けがゼロベースであるため、ZREVRANK は 2 番目の位置にいる June に対して 1 を返します。

ZREVRANK leaderboard June 1

詳細については、 Redisの文書 ソートセットについて。

メッセージング (Redis パブリッシュ/サブスクライブ)

E メールメッセージを送信すると、1 人以上の指定された受信者にメッセージが送信されます。publish/subscribe のパラダイムでは、メッセージをその受信者にではなく、受信者を特定しないまま特定のチャンネルに送信します。メッセージを受信するのは、そのチャンネルに申し込んだ人です。たとえば、お客様が news.sports.golf チャネルに登録しているとします。お客様およびその他すべてのお客様が、 ニュース.スポーツ.ゴルフ チャンネルに公開されたメッセージをすべて取得 ニュース.スポーツ.ゴルフ.

Redis の publish/subscribe 機能は、キー空間とは無関係です。したがって、あらゆるレベルで干渉されることはありません。次の図は、Redis 用 ElastiCache のメッセージングを示したものです。

イメージ: Redis 用 ElastiCache のメッセージングの図

Subscribing

チャンネルでメッセージを受信するには、チャンネルに登録します。1 つのチャンネル、複数の指定されたチャンネル、またはパターンに一致するすべてのチャンネルに登録できます。購読をキャンセルするには、購読時に指定したチャネルから購読を取り消します。または、パターンマッチングを使用して購読した場合、以前使用したパターンと同じパターンを使用して購読を解除できます。

例 - 1 つのチャンネルへの登録

1 つのチャンネルに登録するには、登録するチャンネルを指定して SUBSCRIBE コマンドを使用します。以下の例では、クライアントは news.sports.golf チャンネルに登録します。

SUBSCRIBE news.sports.golf

しばらくすると、クライアントは、登録解除するチャンネルを指定した UNSUBSCRIBE コマンドを使用して、チャンネルへの登録をキャンセルします。

UNSUBSCRIBE news.sports.golf

例 - 複数の指定されたチャンネルへの登録

複数の指定されたチャンネルに登録するには、SUBSCRIBE コマンドを使用してチャンネルに登録します。次の例では、クライアントは ニュース.スポーツ.ゴルフnews.sports.soccer(ニュース.スポーツ.サッカー)、および ニュース、スポーツ、スキー チャネル。

SUBSCRIBE news.sports.golf news.sports.soccer news.sports.skiing

特定のチャネルの購読をキャンセルするには、UNSUBSCRIBE コマンドを使用し、購読解除するチャネルを指定します。

UNSUBSCRIBE news.sports.golf

複数のチャネルの購読をキャンセルするには、UNSUBSCRIBE コマンドを使用して、購読を解除するチャネルを指定します。

UNSUBSCRIBE news.sports.golf news.sports.soccer

すべての月額プランをキャンセルするには、 UNSUBSCRIBE 各チャネルを指定します。または UNSUBSCRIBE チャンネルを指定しないでください。

UNSUBSCRIBE news.sports.golf news.sports.soccer news.sports.skiing

または

UNSUBSCRIBE

例 - パターンマッチングを使用した登録

クライアントは PSUBSCRIBE コマンドを使用して、パターンに一致するすべてのチャンネルに登録できます。

以下の例では、クライアントはすべてのチャンネルに登録します。すべてのスポーツチャンネルを個別にリストするわけではありません。 SUBSCRIBE. 代わりに、 PSUBSCRIBE パターン マッチングを使用するコマンド。

PSUBSCRIBE news.sports.*

例 サブスクリプションのキャンセル

これらのチャンネルへの登録をキャンセルするには、PUNSUBSCRIBE コマンドを使用します。

PUNSUBSCRIBE news.sports.*
重要

[P]SUBSCRIBE コマンドに送られるチャンネルの文字列と、[P]UNSUBSCRIBE コマンドに送られるチャンネルの文字列は一致している必要があります。以下はできません PSUBSCRIBEニュースです。* および PUNSUBSCRIBE から news.sports。* 又は UNSUBSCRIBE から ニュース.スポーツ.ゴルフ.

Publishing

すべてのサブスクライバにチャネルにメッセージを送信するには、 PUBLISH コマンドで、チャネルとメッセージを指定します。次の例は、"It Saturday and sunday. 私はこのリンクに向かいました。」 を ニュース.スポーツ.ゴルフ チャンネル。

PUBLISH news.sports.golf "It's Saturday and sunny. I'm headed to the links."

クライアントが購読しているチャネルに公開することはできません。

詳細については、『Redis ドキュメント』の「Pub/Sub」を参照してください。

推奨データ (Redis ハッシュ)

Redis で INCR または DECR を使用すると、コンパイルの推奨事項が簡単になります。ユーザーが製品を「好き」になるたびに、項目: productID: 好みに 1 を加えます。ユーザーが製品を「嫌い」になるたびに、項目: productID: 嫌いに 1 を加えます。Redis ハッシュを使用して、その製品を好きなまたは嫌いなユーザー全員のリストを保持できます。次の図では、Redis 用 ElastiCache のリアルタイム分析ストアを示します。

イメージ: Redis 用 ElastiCache リアルタイム分析ストア

例 - 好き/嫌い

INCR item:38923:likes HSET item:38923:ratings Susan 1 INCR item:38923:dislikes HSET item:38923:ratings Tommy -1

その他の Redis の用途

ブログ投稿 Redisをスタックに追加するだけの利点を活用する方法 Salvatore Sanfilippoが、データベースに関する多くの一般的な懸念事項と、Redisを使用して簡単に解決できる方法について解説します。この方法では、データベースの負荷がなくなり、パフォーマンスが向上します。

ElastiCache のお客様の声

Airbnb、PBS、Esriなどの企業がどのように利用しているかを知る Amazon ElastiCache 顧客体験の向上によってビジネスを成長させる方法をご覧ください。 他者がどのように使用するか Amazon ElastiCache.

ElastiCache 動画で ElastiCache のお客様の他のユースケースを見ることもできます。