Caches e Redis
É fundamental que seus aplicativos respondam rapidamente às solicitações dos usuários. Quando um site está lento, os visitantes se frustram rapidamente e sairão do seu site, talvez para visitar seus concorrentes. Como você pode criar um aplicativo que responda rapidamente, mesmo quando um conjunto complexo de dados é solicitado? Uma maneira de acelerar seu aplicativo é usar um cache.
Imagine que trabalha para um retalhista de equipamento exterior. Seu novo aplicativo Web está em desenvolvimento e vários microsserviços estão se aproximando de sua primeira versão, mas algumas páginas carregam muito lentamente. Você quer encontrar uma maneira de aumentar seu desempenho.
Nesta unidade, você aprenderá como o cache pode ajudar a aumentar a velocidade de um aplicativo Web.
Qual é Redis?
O Redis é um armazenamento de informações na memória de código aberto. Seu nome é uma abreviação de Remote Dictionary Server. Talvez a característica mais importante do Redis seja sua baixa latência para operações de leitura e gravação, o que ele alcança em virtude de seu design e do fato de que ele mantém todas as informações na memória. O Redis inclui a funcionalidade de banco de dados e agente de mensagens, mas é amplamente reconhecido como um sistema de cache.
Como um cache melhora o desempenho
Os caches podem ser usados para melhorar o desempenho de muitos sistemas que levam tempo para construir respostas para seus usuários. Considere, por exemplo, um site de comércio eletrônico, construído a partir de microsserviços. Quando um usuário quer saber quais itens estão em seu carrinho de compras, o sistema pode:
- Receba a solicitação no microsserviço do aplicativo Web.
- Chame o microsserviço de autenticação para verificar a identidade dos usuários se eles estiverem conectados.
- Ligue para o microsserviço do cesto de compras para saber que artigos e que quantidades estão no cesto.
- Ligue para o microsserviço do catálogo de produtos para obter detalhes completos de cada produto.
- Chame o microsserviço de imagens para obter blobs de imagem para cada produto.
- Ligue para o microsserviço de tomada de estoque para verificar os níveis de estoque.
- Ligue para o microsserviço de envio para calcular os custos de envio para a localização e preferências do usuário.
As etapas precisas podem diferir dependendo do seu design e funcionalidade de negócios, mas você pode ver que o processo pode ser complexo e envolver muitos microsserviços e serviços de suporte separados. Embora cada microsserviço deva ser configurado e dotado de recursos para um bom desempenho, a construção da resposta inevitavelmente consome algum tempo.
Agora imagine que o usuário atualiza a página. Em vez de reconstruir toda a resposta HTML do zero, se a página ou partes dela tiverem sido armazenadas em um cache, ela pode ser retornada ao usuário muito mais rápido do que a solicitação original. Essa resposta rápida ajuda a tornar um aplicativo Web mais responsivo e acolhedor para os usuários.
Considerações sobre cache
Quando você usa o cache, uma decisão de design importante é por quanto tempo armazenar em cache uma parte específica do conteúdo. No carrinho de compras, por exemplo, se você armazenou em cache a página da cesta concluída por uma hora, durante a qual outros pedidos provavelmente serão feitos, a página armazenada em cache às vezes relatará níveis de estoque desatualizados e os usuários podem ter que esperar mais do que o esperado para a entrega. Se você armazenar a página em cache por apenas um minuto, poderá ter mais certeza de que os níveis de estoque serão precisos, mas poderá ver pouca ou nenhuma melhoria no desempenho. Portanto, ao escolher por quanto tempo armazenar informações em cache, considere:
- Com que frequência as informações mudam? Por exemplo, os níveis de estoque podem mudar várias vezes em uma hora, mas novos produtos só podem aparecer no catálogo a cada poucos meses.
- Qual é a importância de os utilizadores verem as informações atualizadas? Por exemplo, os níveis de estoque podem ser fundamentais, mas você pode considerar as avaliações de novos produtos menos críticas em termos de tempo.
- Com que frequência é provável que receba pedidos de informação? O armazenamento em cache de informações populares gera uma melhoria de desempenho maior porque o sistema pode atendê-las a partir do cache várias vezes.
Usando o Redis em projetos do .NET Aspire
O Redis é uma escolha popular para armazenamento em cache em um aplicativo nativo da nuvem. O .NET Aspire fornece três componentes que você pode usar para interagir com um serviço Redis:
- Componente .NET Aspire StackExchange Redis: Use este componente para interagir diretamente com um servidor Redis. Por exemplo, você pode usá-lo para salvar e recuperar valores no banco de dados Redis ou assinar mensagens enviadas para um canal. Como esse componente não está focado em cache, não o consideraremos mais neste módulo.
- Componente de cache de saída Redis do .NET Aspire StackExchange: use este componente para armazenar em cache respostas HTTP completas.
- Componente de cache distribuído .NET Aspire StackExchange Redis: use este componente de cache para armazenar e recuperar dados de um cache distribuído. O cache distribuído descreve uma arquitetura em que vários microsserviços ou outros serviços de cliente compartilham um único cache.