Casos de ElastiCache uso comuns e como ElastiCache ajudar - Amazon ElastiCache

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Casos de ElastiCache uso comuns e como ElastiCache ajudar

Seja para fornecer as últimas notícias, um placar dos 10 primeiros colocados, um catálogo de produtos ou a venda de ingressos para um evento, a velocidade é o nome do jogo. O sucesso do seu site e negócios é significativamente afetado pela rapidez com que você fornece o conteúdo.

Em "Para usuários da Web impacientes, um piscar de olhos é um tempo muito longo para se esperar", os usuários podem registrar uma diferença de 250 milissegundos (1/4 de segundo) entre sites concorrentes. Os usuários tendem a deixar o site mais lento de lado em função do site mais rápido. Os testes feitos na Amazon, citados em How Webpage Load Time Is Related to Visitor Loss (Como o tempo de carregamento da página está relacionado à perda de visitantes), revelaram que, para cada aumento de 100ms (1/10 segundo) no tempo de carregamento, as vendas diminuiriam 1%.

Se alguém quiser dados, você poderá enviar esses dados com muito mais rapidez se eles estiverem armazenados em cache. Isso é verdade, seja para uma página da Web ou um relatório que desencadeie decisões empresariais. Sua empresa pode se dar ao luxo de não armazenar em cache suas páginas da Web, de modo a entregá-las com a menor latência possível?

Talvez seja intuitivamente óbvio que você queira armazenar em cache seus itens mais solicitados. Mas, por que não armazenar em cache seus itens menos solicitados? Até mesmo a consulta de banco de dados ou API chamada remota mais otimizada é visivelmente mais lenta do que recuperar uma chave simples de um cache na memória. Visivelmente mais lento tende a direcionar os clientes para outros lugares.

Os exemplos a seguir ilustram algumas das maneiras pelas quais o uso ElastiCache pode melhorar o desempenho geral do seu aplicativo.

Armazenamento de dados na memória

O objetivo principal de um armazenamento de chaves/valores na memória é fornecer acesso ultrarrápido (latência inferior a milissegundos) e de baixo custo a cópias de dados. A maioria dos armazenamentos de dados possui áreas de dados que são frequentemente acessadas, mas raramente atualizadas. Além disso, as consultas a um banco de dados sempre serão mais lentas e mais caras do que localizar uma chave em um cache de pares de chave/valor. Algumas consultas de banco de dados são especialmente caras para executar. Um exemplo é consultas que envolvem junções em várias tabelas ou consultas com cálculos intensos. Ao armazenar em cache esses resultados de consulta, você paga o preço da consulta apenas uma vez. Em seguida, você pode recuperar rapidamente os dados várias vezes sem ter que voltar a executar a consulta.

O que devo armazenar em cache?

Ao decidir quais dados devem ser armazenados em cache, considere estes fatores:

Velocidade e despesas: é sempre mais lento e mais caro obter dados de um banco de dados do que de um cache. Algumas consultas de banco de dados são inerentemente mais lentas e mais caras do que outras. Por exemplo, consultas que executem junções em várias tabelas são muito mais lentas e mais caras do que simples consultas de tabela única. Se os dados de interesse exigirem uma consulta lenta e cara de obter, eles são candidatos para armazenamento em cache. Se a obtenção dos dados exigir uma consulta relativamente rápida e simples, os dados ainda podem ser candidatos para armazenamento em cache, dependendo de outros fatores.

Dados e padrão de acesso: determinar o que armazenar em cache também envolve a compreensão dos dados e seus padrões de acesso. Por exemplo, não faz sentido armazenar dados em cache que mudem rapidamente ou que sejam raramente acessados. Para que o armazenamento em cache ofereça um benefício real, os dados devem ser relativamente estáticos e frequentemente acessados. Um exemplo é um perfil pessoal em um site de mídia social. Por outro lado, você não vai querer armazenar dados em cache se esse armazenamento não oferecer vantagem de velocidade ou custo. Por exemplo, não faz sentido armazenar em cache páginas da Web que retornem resultados de uma pesquisa, pois tais consultas e resultados são quase sempre exclusivos.

Desatualização: por definição, os dados armazenados em cache são dados obsoletos. Mesmo que, em certas circunstâncias, não sejam obsoletos, eles sempre devem ser considerados e tratados como tal. Para dizer se os seus dados são candidatos para armazenamento em cache, determine a tolerância da sua aplicação a dados obsoletos.

Seu aplicativo pode ser capaz de tolerar dados obsoletos em um contexto, mas não em outro. Por exemplo, suponha que o seu site informe um preço de ações negociadas publicamente. Seus clientes podem aceitar alguma desatualização com um aviso de isenção de responsabilidade de que os preços podem ser n minutos atrasados. Mas, se você informar o preço das ações a um corretor que faça uma venda ou compra, você desejará dados em tempo real.

Considere armazenar seus dados em cache se o seguinte for verdadeiro:

  • Seus dados são lentos ou caros para obtenção em comparação à recuperação do cache.

  • Os usuários acessam seus dados com frequência.

  • Seus dados permanecem relativamente iguais, ou se eles mudam rapidamente, a prontidão não é um problema grande.

Para ter mais informações, consulte Estratégias de armazenamento em cache para Memcached

Tabelas de classificação de jogos

Com os conjuntos OSS classificados do Valkey ou do Redis, você pode mover a complexidade computacional das tabelas de classificação do seu aplicativo para o cluster.

Placares, como os 10 primeiros líderes em um jogo, são computacionalmente complexos. Isso é especialmente verdadeiro quando há um grande número de jogadores concorrentes e continuamente mudando de pontuação. Os conjuntos OSS classificados Valkey e Redis garantem a exclusividade e a ordenação dos elementos. Com conjuntos ordenados, cada vez que um novo elemento é adicionado ao conjunto ordenado, ele é reclassificado em tempo real. Em seguida, eles são adicionados ao conjunto em sua ordem numérica correta.

No diagrama a seguir, você pode ver como funciona uma tabela ElastiCache de classificação de jogos.

Imagem: Diagrama da tabela ElastiCache de classificação de jogos
exemplo Tabela de classificação Valkey ou Redis OSS

Neste exemplo, quatro jogadores e suas pontuações são inseridos em uma lista classificada usando ZADD. O comando ZREVRANGEBYSCORE lista os jogadores por pontuação, de alta a baixa. Em seguida, ZADD é usado para atualizar a pontuação de June, substituindo a entrada existente. Finalmente, ZREVRANGEBYSCORE lista os jogadores por pontuação, de alta a baixa. A lista mostra que June subiu no ranking.

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

O seguinte comando informa June sobre sua classificação entre todos os jogadores. Como a classificação é baseada em zero, ZREVRANKretorna 1 para junho, que está na segunda posição.

ZREVRANK leaderboard June 1

Para obter mais informações, consulte a documentação do Valkey sobre conjuntos ordenados.

Mensagens (Pub/Sub)

Ao enviar uma mensagem de e-mail, você a envia para um ou mais destinatários especificados. No paradigma OSS pub/sub do Valkey e do Redis, você envia uma mensagem para um canal específico sem saber quem, se é que alguém, a recebe. As pessoas que recebem a mensagem são aquelas que assinam o canal. Por exemplo, suponha que você assine o canal news.sports.golf. Você e todos os outros assinantes do canal news.sports.golf receberão todas as mensagens publicadas em news.sports.golf.

A funcionalidade do Pub/Sub não tem relação com nenhum espaço de teclas. Portanto, ela não interferirá em nenhum nível. No diagrama a seguir, você pode encontrar uma ilustração de ElastiCache mensagens com Valkey e RedisOSS.

Imagem: diagrama ElastiCache de mensagens

Assinatura

Para receber mensagens em um canal, é necessário assiná-lo. Você pode assinar um único canal, vários canais especificados ou todos os canais que corresponderem a um padrão. Para cancelar uma assinatura, você cancela o registro do canal especificado quando se inscreveu nele. Ou, se você se inscreveu usando correspondência de padrões, você cancela a assinatura usando o mesmo padrão usado anteriormente.

exemplo - Assinatura de um único canal

Para se inscrever em um único canal, use o SUBSCRIBE comando que especifica o canal no qual você deseja se inscrever. No exemplo a seguir, um cliente assina o canal news.sports.golf.

SUBSCRIBE news.sports.golf

Depois de um tempo, o cliente cancela a assinatura do canal usando o UNSUBSCRIBE comando que especifica o canal do qual cancelar a assinatura.

UNSUBSCRIBE news.sports.golf
exemplo - Assinaturas de vários canais especificados

Para se inscrever em vários canais específicos, liste os canais com o SUBSCRIBE comando. No exemplo a seguir, um cliente assina os canais news.sports.golf, news.sports.soccer e news.sports.skiing.

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

Para cancelar a assinatura de um canal específico, use o UNSUBSCRIBE comando e especifique o canal do qual cancelar a assinatura.

UNSUBSCRIBE news.sports.golf

Para cancelar assinaturas em vários canais, use o UNSUBSCRIBE comando e especifique os canais dos quais cancelar a assinatura.

UNSUBSCRIBE news.sports.golf news.sports.soccer

Para cancelar todas as assinaturas, use UNSUBSCRIBE e especifique cada canal. Ou use UNSUBSCRIBE e não especifique um canal.

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

ou

UNSUBSCRIBE
exemplo - Assinaturas usando a correspondência de padrões

Os clientes podem se inscrever em todos os canais que correspondam a um padrão usando o PSUBSCRIBE comando.

No exemplo a seguir, um cliente assina todos os canais de esportes. Você não lista todos os canais de esportes individualmente, como seria feito usando SUBSCRIBE. Em vez disso, com o comando PSUBSCRIBE, você usa a correspondência de padrões.

PSUBSCRIBE news.sports.*
exemplo Cancelar assinaturas

Para cancelar assinaturas desses canais, use o comando PUNSUBSCRIBE.

PUNSUBSCRIBE news.sports.*
Importante

A cadeia de caracteres do canal enviada para um SUBSCRIBE comando [P] e para o UNSUBSCRIBE comando [P] deve corresponder. Você não pode PSUBSCRIBE em news.* e PUNSUBSCRIBE de news.sports.* ou UNSUBSCRIBE de news.sports.golf.

Publicação

Para enviar uma mensagem a todos os assinantes de um canal, use o comando PUBLISH, especificando o canal e a mensagem. O seguinte exemplo publica a mensagem, "It’s Saturday and sunny. I’m headed to the links." no canal news.sports.golf.

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

Um cliente não pode publicar em um canal no qual esteja inscrito.

Para obter mais informações, consulte Pub/Sub na documentação do Valkey.

Dados de recomendação (hashes)

Usar INCR ou DECR no Valkey ou no Redis OSS simplifica a compilação das recomendações. Cada vez que um usuário "curte" um produto, você aumenta um contador de item:productID:like. Cada vez que um usuário "descurte" um produto, você aumenta um contador de item:productID:dislike. Usando hashes, você também pode manter uma lista de todos que gostaram ou não de um produto.

exemplo - Curtidas e descurtidas
INCR item:38923:likes HSET item:38923:ratings Susan 1 INCR item:38923:dislikes HSET item:38923:ratings Tommy -1

ElastiCache Depoimentos de clientes

Para saber como empresas como AirbnbPBS, Esri e outras usam a Amazon ElastiCache para expandir seus negócios com uma melhor experiência do cliente, consulte Como outras pessoas usam a Amazon. ElastiCache

Você também pode assistir aos vídeos tutoriais para ver outros casos de uso de ElastiCache clientes.