Häufige ElastiCache Anwendungsfälle und wie ElastiCache Sie helfen können - Amazon ElastiCache

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Häufige ElastiCache Anwendungsfälle und wie ElastiCache Sie helfen können

Ob es sich um die neuesten Nachrichten, eine Top-10-Rangliste, einen Produktkatalog oder den Verkauf von Eintrittskarten für eine Veranstaltung handelt - Geschwindigkeit ist das A und O. Der Erfolg Ihrer Website und Ihres Unternehmens hängt stark von der Geschwindigkeit ab, mit der Sie Inhalte bereitstellen.

In dem Artikel "Für ungeduldige Internetnutzer ist ein Augenzwinkern einfach zu lang, um zu warten" stellte die New York Times fest, dass die Nutzer einen Unterschied von 250 Millisekunden (1/4 Sekunde) zwischen konkurrierenden Websites registrieren können. Die Nutzer neigen dazu, die langsamere Seite zugunsten der schnelleren Seite zu verlassen. Tests bei Amazon, die in dem Artikel Wie die Ladezeit von Webseiten mit dem Verlust von Besuchern zusammenhängt zitiert werden, ergaben, dass für jede Erhöhung der Ladezeit um 100 ms (1/10 Sekunde) die Verkaufszahlen um 1 Prozent sinken.

Wenn jemand Daten wünscht, können Sie diese Daten viel schneller bereitstellen, wenn sie im Cache gespeichert sind. Das gilt sowohl für eine Webseite als auch für einen Bericht, der als Grundlage für Geschäftsentscheidungen dient. Kann es sich Ihr Unternehmen leisten, Ihre Webseiten nicht zwischenzuspeichern, um sie so mit der kürzestmöglichen Latenz bereitzustellen?

Es mag intuitiv einleuchtend erscheinen, dass Sie die am häufigsten nachgefragten Artikel in den Cache stellen wollen. Aber warum sollten Sie nicht auch weniger häufig angefragte Elemente zwischenspeichern? Selbst die optimierteste Datenbankabfrage oder der am besten optimierte API Remoteaufruf ist deutlich langsamer als das Abrufen eines Flatkeys aus einem In-Memory-Cache. Eine merkliche Verlangsamung führt dazu, dass Kunden abwandern.

Die folgenden Beispiele veranschaulichen einige Möglichkeiten, wie die Verwendung die Gesamtleistung Ihrer Anwendung verbessern ElastiCache kann.

In-Memory-Datastore

Der primäre Zweck eines Hauptspeicher-basierten Key-Value Store besteht darin, superschnellen (mit einer Latenz von unter einer Millisekunde) und kostengünstigen Zugriff auf Kopien von Daten bereitzustellen. Die meisten Datenspeicher haben Bereiche mit Daten, auf die häufig zugegriffen wird, die aber selten aktualisiert werden. Außerdem wird das Abfragen einer Datenbank immer langsamer und kostspieliger sein als das Auffinden eines Schlüssels in einem Schlüsselwertpaar-Cache. Manche Datenbankabfragen sind besonders aufwendig in der Durchführung. Ein Beispiel dafür sind Abfragen, die Joins über mehrere Tabellen oder Abfragen mit intensiven Berechnungen beinhalten. Durch die Zwischenspeicherung solcher Abfrageergebnisse zahlen Sie den Preis für die Abfrage nur einmal. Dann können Sie die Daten schnell und mehrfach abrufen, ohne die Abfrage erneut ausführen zu müssen.

Was sollte ich zwischenspeichern?

Bei der Entscheidung, welche Daten zwischengespeichert werden, sind folgende Faktoren zu berücksichtigen:

Geschwindigkeit und Kosten – Es ist immer langsamer und teurer, Daten aus einer Datenbank abzurufen als aus einem Cache. Manche Datenbankabfragen sind grundsätzlich langsamer und kostspieliger als andere. Beispielsweise sind Abfragen, bei denen mehrere Tabellen miteinander verknüpft werden, viel langsamer und teurer als einfache Abfragen, die nur eine Tabelle betreffen. Wenn die interessanten Daten eine langsame und teure Abfrage erfordern, sind sie ein Kandidat für das Caching. Wenn der Abruf der Daten eine relativ schnelle und einfache Abfrage erfordert, kann er je nach anderen Faktoren immer noch ein Kandidat für die Zwischenspeicherung sein.

Daten und Zugriffsmuster – Um zu bestimmen, was zwischengespeichert werden soll, müssen auch die Daten selbst und ihre Zugriffsmuster verstanden werden. So ist es beispielsweise nicht sinnvoll, Daten, die sich schnell ändern oder auf die nur selten zugegriffen wird, im Cache zu speichern. Damit die Zwischenspeicherung einen echten Nutzen bringt, sollten die Daten relativ statisch sein und häufig abgerufen werden. Ein Beispiel wäre ein persönliches Profil auf einer Social-Media-Website. Andererseits sollten Sie keine Daten zwischenspeichern, wenn das Zwischenspeichern keine Geschwindigkeits- oder Preisvorteile bringt. So ist es beispielsweise nicht sinnvoll, Webseiten, die Suchergebnisse liefern, in den Cache zu stellen, da die Abfragen und Ergebnisse in der Regel einzigartig sind.

Unvergänglichkeit – Per Definition sind zwischengespeicherte Daten veraltete Daten. Selbst wenn es unter bestimmten Umständen nicht veraltet ist, sollte es immer als veraltet betrachtet und behandelt werden. Um festzustellen, ob Ihre Daten für die Zwischenspeicherung geeignet sind, müssen Sie die Toleranz Ihrer Anwendung gegenüber veralteten Daten ermitteln.

Es kann sein, dass Ihre Anwendung veraltete Daten in dem einen Kontext tolerieren kann, nicht jedoch in einem anderen. Nehmen wir zum Beispiel an, dass Ihre Website einen öffentlich gehandelten Aktienkurs anbietet. Ihre Kunden könnten eine gewisse Unbeständigkeit akzeptieren, wenn sie darauf hingewiesen werden, dass sich die Preise um n Minuten verzögern können. Aber wenn Sie diesen Aktienkurs einem Broker für einen Kauf oder Verkauf zur Verfügung stellen, benötigen Sie Echtzeitdaten.

Erwägen Sie die Zwischenspeicherung Ihrer Daten, wenn Folgendes zutrifft:

  • Der Abruf Ihrer Daten ist im Vergleich zum Abruf aus dem Cache langsam oder teuer.

  • Benutzer greifen häufig auf Ihre Daten zu.

  • Ihre Daten bleiben relativ konstant, oder wenn sie sich schnell ändern, ist die Unbeständigkeit kein großes Problem.

Weitere Informationen finden Sie unter Caching-Strategien für Memcached

Bestenlisten für Gaming-Spiele

Mit den OSS sortierten Sets von Valkey oder Redis können Sie die Rechenkomplexität von Bestenlisten von Ihrer Anwendung auf Ihren Cluster verlagern.

Bestenlisten, wie z. B. die 10 besten Ergebnisse eines Spiels, sind rechenintensiv. Dies gilt vor allem bei einer großen Anzahl gleichzeitiger Spieler und sich ständig ändernden Spielständen. Die OSS sortierten Sets von Valkey und Redis garantieren sowohl Einzigartigkeit als auch Reihenfolge der Elemente. Bei sortierten Mengen wird jedes Mal, wenn ein neues Element zur sortierten Menge hinzugefügt wird, es in Echtzeit neu eingestuft. Es wird dann in der numerisch richtigen Reihenfolge in die Menge eingefügt.

In der folgenden Abbildung können Sie sehen, wie eine ElastiCache Gaming-Bestenliste funktioniert.

Bild: Diagramm der ElastiCache Gaming-Bestenliste
Beispiel Valkey- oder Redis-Bestenliste OSS

In diesem Beispiel werden vier Spieler und ihre Ergebnisse mithilfe von ZADD in eine sortierte Liste eingegeben. Der Befehl ZREVRANGEBYSCORE listet die Spieler in absteigender Reihenfolge entsprechend ihrem Ergebnis auf. Als Nächstes wird ZADD verwendet, um das Ergebnis von June zu aktualisieren, indem der bestehende Eintrag überschrieben wird. Zum Schluss werden die Spieler von ZREVRANGEBYSCORE nach ihrer Punktzahl aufgelistet, von hoch bis niedrig. Die Liste zeigt, dass June in der Rangliste aufgestiegen ist.

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

Mit dem folgenden Befehl erfährt June, auf welchem Platz sie unter allen Spielern steht. Da das Ranking auf Null basiert, wird für June, der an zweiter Stelle steht, eine 1 ZREVRANKzurückgegeben.

ZREVRANK leaderboard June 1

Weitere Informationen finden Sie in der Valkey-Dokumentation zu sortierten Mengen.

Nachrichtenübermittlung (Pub/Sub)

Wenn Sie eine E-Mail-Nachricht versenden, senden Sie sie an mindestens einen angegebenen Empfänger. Im OSS Pub/Sub-Paradigma von Valkey und Redis senden Sie eine Nachricht an einen bestimmten Kanal, ohne zu wissen, wer, wenn überhaupt, sie empfängt. Die Nachricht wird nur an die Personen gesendet, die den Kanal abonniert haben. Angenommen, Sie haben etwa den news.sports.golf-Channel abonniert. Sie und alle anderen, die den Kanal news.sports.golf abonniert haben, erhalten alle auf news.sports.golf veröffentlichten Nachrichten.

Die Pub/Sub-Funktionalität hat nichts mit einem Schlüsselraum zu tun. Daher gibt es auf keinem Level Beeinträchtigungen. In der folgenden Abbildung finden Sie eine Abbildung des ElastiCache Messagings mit Valkey und Redis. OSS

Bild: Nachrichtendiagramm ElastiCache

Abonnieren

Um Nachrichten in einem Kanal zu erhalten, abonnieren Sie den Kanal. Sie können einen einzelnen Channel, mehrere spezielle Channels oder alle Channels, die einem Muster entsprechen, abonnieren. Um ein Abonnement zu kündigen, melden Sie sich von dem Kanal ab, den Sie abonniert haben. Wenn Sie sich mit Hilfe eines Musterabgleichs angemeldet haben, können Sie sich auch mit demselben Muster wieder abmelden, das Sie zuvor verwendet haben.

Beispiel – Abonnement eines einzelnen Channels

Um einen einzelnen Kanal zu abonnieren, verwenden Sie den SUBSCRIBE Befehl, der den Kanal angibt, den Sie abonnieren möchten. Im folgenden Beispiel abonniert ein Client den Channel news.sports.golf.

SUBSCRIBE news.sports.golf

Nach einer Weile kündigt der Client sein Abonnement für den Kanal mithilfe des UNSUBSCRIBE Befehls, der den Kanal angibt, von dem das Abonnement beendet werden soll.

UNSUBSCRIBE news.sports.golf
Beispiel – Abonnement mehrerer ausgewählter Channels

Um mehrere spezifische Kanäle zu abonnieren, listen Sie die Kanäle mit dem SUBSCRIBE Befehl auf. Im folgenden Beispiel abonniert ein Client die Channels news.sports.golf, news.sports.soccer und news.sports.skiing.

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

Um ein Abonnement für einen bestimmten Kanal zu kündigen, verwenden Sie den UNSUBSCRIBE Befehl und geben Sie den Kanal an, von dem Sie sich abmelden möchten.

UNSUBSCRIBE news.sports.golf

Um Abonnements für mehrere Kanäle zu kündigen, verwenden Sie den UNSUBSCRIBE Befehl und geben Sie die Kanäle an, von denen Sie sich abmelden möchten.

UNSUBSCRIBE news.sports.golf news.sports.soccer

Um alle Abonnements zu kündigen, verwenden Sie UNSUBSCRIBE und geben Sie jeden Kanal an. Oder verwenden Sie UNSUBSCRIBE ohne einen Kanal anzugeben.

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

or

UNSUBSCRIBE
Beispiel – Abonnements mithilfe von Musterabgleich

Kunden können mit dem PSUBSCRIBE Befehl alle Kanäle abonnieren, die einem Muster entsprechen.

Im folgenden Beispiel abonniert ein Client alle Sport-Channels. Sie listen nicht alle Sportkanäle einzeln auf, wie Sie es bei SUBSCRIBE tun. Mit dem PSUBSCRIBE-Befehl verwenden Sie stattdessen den Mustervergleich.

PSUBSCRIBE news.sports.*
Beispiel Kündigen von Abonnements

Um Abonnements für diese Channels zu kündigen, verwenden Sie den PUNSUBSCRIBE-Befehl.

PUNSUBSCRIBE news.sports.*
Wichtig

Die Kanalzeichenfolge, die an einen [P] SUBSCRIBE -Befehl und an den Befehl [P] gesendet UNSUBSCRIBE wird, muss übereinstimmen. PSUBSCRIBE zu news.* und PUNSUBSCRIBE von news.sports.* oder UNSUBSCRIBE von news.sports.golf ist nicht möglich.

Veröffentlichen

Um eine Nachricht an alle Abonnenten eines Kanals zu senden, verwenden Sie den PUBLISH-Befehl, wobei Sie den Kanal und die Nachricht angeben. Im folgenden Beispiel wird diese Nachricht veröffentlicht: "Es ist Samstag und sonnig. Ich fahre zu den Links.“ auf den news.sports.golf-Kanal.

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

Ein Client kann nicht auf einem Kanal veröffentlichen, den er abonniert hat.

Weitere Informationen finden Sie unter Pub/Sub in der Valkey-Dokumentation.

Empfehlungsdaten (Hashes)

Die Verwendung von INCR oder DECR in Valkey oder Redis OSS macht das Kompilieren von Empfehlungen einfach. Immer dann, wenn Benutzer ein Produkt "liken", erhöhen Sie einen item:productID:like-Zähler. Immer dann, wenn Benutzer ein Produkt ein "disliken", erhöhen Sie einen item:productID:dislike-Zähler. Mithilfe von Hashes können Sie auch eine Liste aller Personen führen, denen ein Produkt gefallen oder nicht gefallen hat.

Beispiel – Likes und Dislikes
INCR item:38923:likes HSET item:38923:ratings Susan 1 INCR item:38923:dislikes HSET item:38923:ratings Tommy -1

ElastiCache Kundenreferenzen

Weitere Informationen darüber, wie Unternehmen wie AirbnbPBS, Esri und andere Amazon nutzen, ElastiCache um ihr Geschäft durch ein verbessertes Kundenerlebnis auszubauen, finden Sie unter So nutzen andere Amazon ElastiCache.

Sie können sich auch die Tutorial-Videos für weitere Anwendungsfälle von ElastiCache Kunden ansehen.