Caches e Redis
É fundamental que seus aplicativos respondam rapidamente às solicitações dos usuários. Quando um site está lento, os visitantes ficam frustrados rapidamente e saem do site, talvez para visitar seus concorrentes. Como 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 você trabalha para um varejista de equipamentos para atividades ao ar livre. Seu novo aplicativo Web está em desenvolvimento e vários microsserviços estão se aproximando do primeiro lançamento, mas algumas páginas carregam muito lentamente. Você deseja encontrar uma maneira de aumentar seu desempenho.
Nessa unidade, você aprenderá como o cache pode ajudar a aumentar a velocidade de um aplicativo web.
O que é o Redis?
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 consegue em virtude de seu design e do fato de manter todas as informações na memória. Redis inclui funcionalidade de banco de dados e corretor 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 aos seus usuários. Considere, por exemplo, um site de comércio eletrônico, construído a partir de microsserviços. Quando um usuário deseja 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 logados.
- Ligue para o microsserviço da cesta de compras para saber quais itens e quais quantidades estão na cesta.
- 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 imagens para cada produto.
- Ligue para o microsserviço de estoque para verificar os níveis de estoque.
- Chame o microsserviço de envio para calcular os custos de envio de acordo com a localização e as preferências do usuário.
As etapas precisas podem diferir dependendo do design e da funcionalidade do negócio, mas você pode ver que o processo pode ser complexo e envolver muitos microsserviços e serviços de apoio separados. Embora cada microsserviço deva ser configurado e equipado para ter um bom desempenho, a construção da resposta inevitavelmente consome algum tempo.
Agora imagine que o usuário atualize 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 poderá ser devolvida ao usuário muito mais rápido do que a solicitação original. Essa resposta rápida ajuda a tornar um aplicativo da web mais responsivo e acolhedor para os usuários.
Considerações sobre cache
Quando você usa o cache, uma decisão importante de design é por quanto tempo armazenar em cache uma determinada parte do conteúdo. No carrinho de compras, por exemplo, se você armazenou em cache a página do carrinho concluída por uma hora, durante a qual é provável que outros pedidos sejam feitos, a página em cache às vezes reportará níveis de estoque desatualizados e os usuários poderão ter que esperar mais tempo do que o esperado para 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 as informações em cache, considere:
- Com que frequência as informações são alteradas? Por exemplo, os níveis de estoque podem mudar várias vezes em uma hora, mas novos produtos podem aparecer no catálogo apenas a cada poucos meses.
- Quão importante é que os usuários vejam as informações atualizadas? Por exemplo, os níveis de estoque podem ser fundamentais, mas você pode considerar as análises de novos produtos menos críticas em termos de tempo.
- Com que frequência você provavelmente receberá solicitações de informações? O armazenamento em cache de informações populares produz uma maior melhoria de desempenho porque o sistema pode servi-las a partir do cache diversas vezes.
Usando Redis em aplicativos .NET Aspire
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 esse 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 no armazenamento em cache, não o consideraremos mais detalhadamente nesse módulo.
- Componente de cache de saída do .NET Aspire StackExchange Redis: Use esse componente para armazenar em cache respostas HTTP completas.
- Componente de cache distribuído .NET Aspire StackExchange Redis: Use esse componente de cache para armazenar e recuperar dados de um cache distribuído. O cache distribuído descreve uma arquitetura onde vários microsserviços ou outros serviços de cliente compartilham um único cache.