Casi ElastiCache d'uso comuni e come ElastiCache può essere utile - Amazon ElastiCache

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Casi ElastiCache d'uso comuni e come ElastiCache può essere utile

Che si tratti di fornire le ultime notizie del giorno, una classifica dei primi 10 punteggi di gioco, un catalogo di prodotti o che si tratti di vendere biglietti per un evento, la velocità è alla base di ogni operazione. Il successo del tuo sito web e del tuo business è influenzato significativamente dalla velocità con cui si distribuiscono i contenuti.

Nell'articolo "For Impatient Web Users, an Eye Blink Is Just Too Long to Wait (Per gli utenti del web impazienti, attendere un battito di ciglia è troppo)”, il New York Times ha stimato che gli utenti possono registrare una differenza di 250 millisecondi (1/4 di secondo) tra i siti concorrenti. Gli utenti tendono a scartare il sito più lento a favore di quello più veloce. Test effettuati da Amazon, secondo quanto descritto in How Webpage Load Time Is Related to Visitor Loss (Come il tempo di caricamento di una pagina Web è collegato alla perdita di visitatori), hanno rivelato che ogni 100 ms in più (1/10 di secondo) impiegati nel caricamento della pagina, le vendite subiscono una flessione dell'1 percento.

Se qualcuno desidera dei dati, è possibile fornirli in modo molto più veloce se sono memorizzati nella cache. Che si tratti di una pagina web o di un report alla base di decisioni aziendali. La tua azienda può permettersi di non memorizzare in cache le pagine web in modo da distribuirle con la minore latenza possibile?

Intuitivamente, potrebbe essere piuttosto scontato pensare di memorizzare in cache gli elementi richiesti con maggiore frequenza. Invece, perché non memorizzare in cache gli elementi richiesti con minore frequenza? Anche la query o la API chiamata remota al database più ottimizzata sono notevolmente più lente rispetto al recupero di una chiave piatta da una cache in memoria. I tempi notevolmente più lenti spingono i clienti ad andare altrove.

Gli esempi seguenti illustrano alcuni dei modi in cui l'utilizzo ElastiCache può migliorare le prestazioni complessive dell'applicazione.

Datastore in memoria

Lo scopo principale di uno store chiave-valore in memoria è fornire accesso ultrarapido (latenza in millisecondi) e a costo zero alle copie di dati. La maggior parte dei datastore hanno aree di dati a cui si accede di frequente ma che vengono aggiornate raramente. Inoltre, l'interrogazione di un database è sempre più lenta e più costosa dell'individuazione di una chiave in una cache della coppia chiave-valore. Alcune query di database sono particolarmente costose da eseguire. Ad esempio, le query che implicano unioni di più tabelle o le query con calcoli complessi. Memorizzando nella cache tali risultati delle query, si paga il prezzo della query una sola volta. Quindi è possibile richiamare velocemente i dati più volte senza dover rieseguire la query.

Cosa devo memorizzare nella cache?

Quando si decide quali dati memorizzare nella cache, tenere presenti i seguenti fattori:

Velocità e spese – È sempre più lento e costoso ottenere dati da un database che da una cache. Alcune query del database sono per natura più lente e più costose di altre. Ad esempio, le query che eseguono unioni su più tabelle sono molto più lente e più costose delle semplici query a tabella unica. Se l'acquisizione di dati interessanti richiede una query più lenta e più costosa, è indicata per il caching. Se l'acquisizione di dati richiede una query semplice e relativamente rapida, può essere idonea per il caching ma è necessario valutare altri fattori.

Dati e modello di accesso— Determinare cosa memorizzare nella cache comporta anche la comprensione dei dati stessi e dei relativi modelli di accesso. Ad esempio, non ha senso memorizzare nella cache i dati sottoposti a continue modifiche o a cui si accede raramente. Affinché la memorizzazione nella cache fornisca vantaggi reali, i dati devono essere relativamente statici e l'accesso a essi deve essere frequente. Un esempio è un profilo personale su un sito di social media. D’altra parte, non è necessario memorizzare nella cache se questa operazione non fornisce vantaggi economici e non migliora la velocità. Ad esempio, non ha senso memorizzare in cache le pagine web che restituiscono risultati di ricerca, perché le query e i risultati sono di solito univoci.

Obsolescenza – Per definizione, i dati memorizzati nella cache sono dati obsoleti. Anche se in determinate circostanze non sono obsoleti, dovrebbero sempre essere considerati e trattati come obsoleti. Per dire se i dati siano candidati al caching, devi stabilire la tolleranza dell'applicazione per i dati obsoleti.

L'applicazione potrebbe essere in grado di tollerare i dati obsoleti in un dato contesto, ma non in un altro. Supponi, ad esempio, che il sito fornisca un prezzo delle azioni quotato in borsa. I clienti potrebbero accettare una certa obsolescenza con una dichiarazione di non responsabilità secondo la quale i prezzi potrebbero essere n minuti in ritardo. Tuttavia, quando si offre il prezzo per lo stesso stock a un broker che effettua una vendita o un acquisto, sono necessari i dati in tempo reale.

Prendi in considerazione di memorizzare nella cache i dati in presenza di una delle seguenti condizioni:

  • L'acquisizione dei dati è lenta o costosa se confrontata con il recupero dalla cache.

  • Gli utenti accedono spesso ai dati.

  • I dati rimangono relativamente gli stessi, o se cambiano rapidamente l’obsolescenza non è un grosso problema.

Per ulteriori informazioni, consulta Strategie di caching per Memcached

Classifiche di gioco

Con i set OSS ordinati Valkey o Redis puoi spostare la complessità computazionale delle classifici dall'applicazione al cluster.

Le classifiche, ad esempio i primi 10 punteggi di una partita, sono complessi da un punto di vista computazionale. Ciò è particolarmente vero quando c'è un gran numero di giocatori concorrenti e punteggi che cambiano continuamente. I set ordinati Valkey e Redis garantiscono sia l'unicità che l'OSSordine degli elementi. Con i set ordinati, ogni volta che un nuovo elemento viene aggiunto al set ordinato, questo viene riclassificato in tempo reale. Viene quindi aggiunto al set nel corretto ordine numerico.

Nel diagramma seguente, puoi vedere come funziona una classifica di gioco. ElastiCache

Immagine: ElastiCache diagramma della classifica dei giochi
Esempio Classificazione Valkey o Redis OSS

In questo esempio, quattro giocatori e i relativi punteggi vengono inseriti in un elenco ordinato tramite ZADD. Il comando ZREVRANGEBYSCORE elenca i giocatori in base al punteggio, dal più alto al più basso. Quindi, ZADD viene utilizzato per aggiornare il punteggio di June sostituendo la voce esistente. Infine ZREVRANGEBYSCORE elenca i giocatori in base al punteggio, dal più alto al più basso. L’elenco mostra che June è salita di posizione nella classifica.

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

Il comando seguente comunica a June qual è il suo posto nella classifica di tutti i giocatori. Poiché la classifica è a base zero, ZREVRANKrestituisce 1 per June, che è in seconda posizione.

ZREVRANK leaderboard June 1

Per ulteriori informazioni, consulta la documentazione di Valkey sugli insiemi ordinati.

Messaggistica (Pub/Sub)

Quando invii un messaggio e-mail, lo invii a uno o più destinatari specificati. Nel paradigma OSS pub/sub di Valkey e Redis, si invia un messaggio a un canale specifico senza sapere chi, se qualcuno, lo riceve. Le persone che ricevono il messaggio sono quelle che hanno effettuato la sottoscrizione al canale. Ad esempio, supponiamo che tu voglia effettuare la sottoscrizione al canale news.sports.golf: Tu e tutti gli iscritti al canale news.sports.golf ricevono tutti i messaggi pubblicati su news.sports.golf.

La funzionalità Pub/sub non ha alcuna relazione con lo spazio chiave. Perciò, non interferisce a nessun livello. Nel diagramma seguente, puoi trovare un'illustrazione della ElastiCache messaggistica con Valkey e Redis. OSS

Immagine: diagramma di messaggistica ElastiCache

Sottoscrizione in corso

Per ricevere messaggi su un canale, effettua la sottoscrizione al canale. Puoi effettuare la sottoscrizione al canale, a più canali specificati o a tutti i canali che corrispondono a un modello. Per annullare una sottoscrizione, annulli la sottoscrizione dal canale specificato al momento dell’iscrizione. In alternativa, se la sottoscrizione è stata effettuata utilizzando la corrispondenza dei modelli, la si annulla utilizzando lo stesso modello utilizzato in precedenza.

Esempio – Effettuare una sottoscrizione a un singolo canale

Per iscriverti a un singolo canale, usa il SUBSCRIBE comando che specifica il canale a cui vuoi iscriverti. Nell'esempio seguente, un cliente effettua la sottoscrizione al canale news.sports.golf.

SUBSCRIBE news.sports.golf

Dopo un po', il client annulla l'iscrizione al canale utilizzando il UNSUBSCRIBE comando che specifica il canale da cui annullare l'iscrizione.

UNSUBSCRIBE news.sports.golf
Esempio – Sottoscrizioni a più canali specificati

Per iscriverti a più canali specifici, elenca i canali con il comando. SUBSCRIBE Nell'esempio seguente, un cliente effettua la sottoscrizione ai canali news.sports.golf, news.sports.soccer e news.sports.skiing.

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

Per annullare un abbonamento a un canale specifico, usa il UNSUBSCRIBE comando e specifica il canale da cui annullare l'iscrizione.

UNSUBSCRIBE news.sports.golf

Per annullare gli abbonamenti a più canali, usa il UNSUBSCRIBE comando e specifica i canali da cui annullare l'iscrizione.

UNSUBSCRIBE news.sports.golf news.sports.soccer

Per annullare tutte le sottoscrizioni, usa UNSUBSCRIBE e specifica ogni canale. Oppure usa UNSUBSCRIBE e non specificare un canale.

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

oppure

UNSUBSCRIBE
Esempio – Sottoscrizioni mediante la corrispondenza di modelli

I clienti possono abbonarsi a tutti i canali che corrispondono a uno schema utilizzando il PSUBSCRIBE comando.

Nell'esempio seguente, un cliente effettua la sottoscrizione a tutti i canali sportivi. Non elenchi tutti i canali sportivi singolarmente, come si farebbe con SUBSCRIBE. Invece, con il comando PSUBSCRIBE si utilizza la corrispondenza del modello.

PSUBSCRIBE news.sports.*
Esempio Annullamento delle sottoscrizioni

Per annullare le sottoscrizioni a questi canali, utilizza il comando PUNSUBSCRIBE.

PUNSUBSCRIBE news.sports.*
Importante

La stringa del canale inviata a un SUBSCRIBE comando [P] e al UNSUBSCRIBE comando [P] deve corrispondere. Non è possibile PSUBSCRIBE a news.* e PUNSUBSCRIBE da news.sports.* o UNSUBSCRIBE da news.sports.golf.

Pubblicazione

Per inviare un messaggio a tutti coloro che hanno effettuato la sottoscrizione a un canale, utilizza il comando PUBLISH specificando il canale e il messaggio. L'esempio seguente pubblica il messaggio "It’s Saturday and sunny (è sabato e fa bel tempo. I'm headed to the links. (Vado ai link)”. sul canale news.sports.golf.

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

Un client non può pubblicare su un canale a cui è abbonato.

Per ulteriori informazioni, consulta Pub/Sub nella documentazione di Valkey.

Dati di raccomandazione (hash)

L'utilizzo di INCR o DECR in Valkey o Redis OSS semplifica la compilazione dei consigli. Ogni volta che un utente aggiunge un "mi piace" a un prodotto, si incrementa il contatore item:productID:like. Ogni volta che un utente aggiunge un "non mi piace" a un prodotto, si incrementa il contatore item:productID:dislike. Utilizzando gli hash, puoi anche mantenere un elenco di tutti coloro che hanno apprezzato o non apprezzato un prodotto.

Esempio - "Mi piace" e "Non mi piace"
INCR item:38923:likes HSET item:38923:ratings Susan 1 INCR item:38923:dislikes HSET item:38923:ratings Tommy -1

ElastiCache Testimonianze dei clienti

Per scoprire in che modo aziende come AirbnbPBS, Esri e altre utilizzano Amazon ElastiCache per far crescere le proprie attività con una migliore esperienza cliente, consulta Come gli altri utilizzano Amazon ElastiCache.

Puoi anche guardare i video del tutorial per altri casi d'uso da parte ElastiCache dei clienti.