Trace Id is missing
Pular para o conteúdo principal

O que é cache?

Desenvolvedores e profissionais de TI usam o cache para salvar e acessar dados de valores-chave na memória temporária com mais rapidez e menos esforço do que os dados armazenados no armazenamento de dados convencional. Os caches são úteis em vários cenários com diversas tecnologias, como o cache de computador com memória RAM, o cache de rede em uma rede de distribuição de conteúdo, um cache da Web para dados multimídia da Web ou um cache de nuvem para ajudar a tornar os aplicativos de nuvem mais resilientes. Os desenvolvedores geralmente projetam aplicativos para armazenar dados processados em cache e, em seguida, reaproveitá-los para atender solicitações mais rapidamente do que em consultas de banco de dados padrão.

Você pode usar o cache para reduzir custos de banco de dados, fornecer maior rendimento e menor latência do que a maioria dos bancos de dados pode oferecer e aumentar o desempenho de aplicativos da web e da nuvem.

Como funciona o cache para bancos de dados?

Os desenvolvedores podem complementar um banco de dados primário com um cache de banco de dados, que pode ser colocado no banco de dados ou no aplicativo ou configurado como uma camada independente. Embora normalmente dependam de um banco de dados convencional para armazenar conjuntos de dados grandes, duráveis e completos, eles usam um cache para armazenar subconjuntos transitórios de dados para recuperação rápida.

Você pode usar o cache com todos os tipos de armazenamentos de dados, incluindo bancos de dados NoSQL bem como bancos de dados relacionais, como o SQL Server, MySQL, ou MariaDB. O cache também funciona bem com muitas plataformas de dados específicas, como Banco de Dados do Azure para PostgreSQLBanco de Dados SQL do Azure ou Instância Gerenciada de SQL do Azure. Recomendamos pesquisar que tipo de armazenamento de dados atenderá melhor aos seus requisitos antes de começar a configurar uma arquitetura de dados. Por exemplo, você gostaria de entender o que é o PostgreSQL antes de usá-lo para combinar armazenamentos de dados relacionais e não estruturados.

Os benefícios das camadas de cache e, afinal, o que é Redis?

Os desenvolvedores usam caches multiníveis chamados camadas de cache para armazenar diferentes tipos de dados em caches separados de acordo com a demanda. Ao adicionar uma ou várias camadas de cache, você pode melhorar significativamente o rendimento e o desempenho de latência de uma camada de dados.

Redis é uma estrutura de dados na memória de código aberto popular usada para construir camadas de cache de alto desempenho e outros armazenamentos de dados. Um estudo recente mostrou que adicionar o Cache do Azure para Redis a um aplicativo de exemplo aumentou a taxa de transferência de dados em mais de 800% e melhorou o desempenho de latência em mais de 1,000%.1.

Os caches também podem reduzir o custo total de propriedade (TCO) de uma camada de dados. Ao usar caches para atender às consultas mais comuns e reduzir a carga do banco de dados, você pode diminuir a necessidade de provisionamento excessivo de instâncias de banco de dados, resultando em economias significativas de custos e menor TCO.

Tipos de cache

Sua estratégia de cache depende de como seu aplicativo lê e grava dados. O aplicativo faz uso intenso de gravação ou os dados são gravados uma vez e lidos com frequência? Os dados retornados são sempre exclusivos? Diferentes padrões de acesso aos dados influenciarão a maneira como você configura um cache. Os tipos de cache comuns incluem cache-aside, leitura/gravação e gravação atrás/gravação.

Cache-aside

Para aplicativos com cargas de trabalho de leitura intensa, os desenvolvedores geralmente usam um padrão de programação de cache-aside, ou "side-cache." Eles localizam o cache lateral fora do aplicativo, que pode então se conectar ao cache para consultar e recuperar dados ou diretamente ao banco de dados se os dados não estiverem no cache. À medida que o aplicativo recupera os dados, ele os copia para o cache para consultas futuras.

Você pode usar um cache lateral para ajudar a melhorar o desempenho do aplicativo, manter a consistência entre o cache e o armazenamento de dados e evitar que os dados no cache fiquem obsoletos.

Cache de leitura/gravação

Os caches de leitura mantêm-se atualizados, enquanto com o cache de gravação, o aplicativo grava dados no cache e depois no banco de dados. Ambos os caches ficam alinhados com o banco de dados e o aplicativo os trata como o armazenamento de dados principal.

Os caches de leitura ajudam a simplificar aplicações onde os mesmos dados são solicitados repetidamente, mas o cache em si é mais complexo, enquanto o processo de gravação em duas etapas pode criar latência. Os desenvolvedores combinam os dois para ajudar a garantir a consistência dos dados entre o cache e o banco de dados, reduzir a latência do cache de gravação e facilitar a atualização do cache de leitura.

Com o cache de leitura/gravação, os desenvolvedores podem simplificar o código do aplicativo, aumentar a escalabilidade do cache e minimizar a carga do banco de dados.

Cache com write-behind/write-back

Nesse cenário, o aplicativo grava dados no cache, que é imediatamente confirmado, e o próprio cache grava os dados novamente no banco de dados em segundo plano. Caches write-behind, às vezes conhecidos como caches write-back, são melhores para cargas de trabalho com uso intenso de gravação e melhoram o desempenho de gravação porque o aplicativo não precisa esperar a conclusão da gravação antes de passar para a próxima tarefa.

Cache distribuído versus armazenamento de sessão

As pessoas costumam confundir caches distribuídos com armazenamentos de sessão, que são semelhantes, mas com requisitos e finalidades diferentes. Em vez de usar um cache distribuído para complementar um banco de dados, os desenvolvedores implementam armazenamentos de sessão, que são armazenamentos temporários de dados na camada do usuário, para perfis, mensagens e outros dados do usuário em aplicativos orientados a sessão, como aplicativos da web.

O que é um armazenamento de sessão?

Os aplicativos orientados a sessão acompanham as ações que os usuários executam enquanto eles estão conectados aos aplicativos. Para preservar esses dados quando o usuário sai, você pode mantê-los em um armazenamento de sessões, o que melhora o gerenciamento de sessões, reduz custos e acelera o desempenho do aplicativo.

Qual a diferença entre usar um armazenamento de sessão e armazenar um banco de dados em cache?

Num armazenamento de sessão, os dados não são partilhados entre diferentes utilizadores, enquanto que com o cache, diferentes utilizadores podem aceder ao mesmo cache. Os desenvolvedores usam o cache para melhorar o desempenho de um banco de dados ou instância de armazenamento, enquanto usam armazenamentos de sessão para aumentar o desempenho do aplicativo, gravando dados no armazenamento na memória, eliminando a necessidade de acessar um banco de dados.

Os dados gravados em um armazenamento de sessão normalmente têm vida curta, enquanto os dados armazenados em cache com um banco de dados primário geralmente duram muito mais tempo. Um repositório de sessão exige replicação, alta disponibilidade e durabilidade de dados para garantir que os dados transacionais não sejam perdidos e os usuários permaneçam envolvidos. Por outro lado, se os dados de um cache secundário forem perdidos, sempre haverá uma cópia deles no banco de dados permanente.

Benefícios do cache

Desempenho aprimorado do aplicativo

A leitura de dados de um cache na memória é muito mais rápida do que o acesso aos dados por meio de um armazenamento de dados controlado por disco. Com o acesso mais rápido aos dados, a experiência geral do aplicativo é aprimorada consideravelmente.

Redução do uso e dos custos do banco de dados

O cache resulta em menos consultas de banco de dados, aprimorando o desempenho e reduzindo os custos pela limitação da necessidade de escalar a infraestrutura do banco de dados e pela diminuição dos custos de taxa de transferência.

Desempenho escalonável e previsível

Uma só instância de cache pode processar milhões de solicitações por segundo, oferecendo um nível de taxa de transferência e escalabilidade com o qual os bancos de dados não podem se equiparar. O cache também oferece a flexibilidade necessária, quer você esteja escalando horizontal ou verticalmente seus aplicativos e seus armazenamentos de dados. Em seguida, seu aplicativo pode permitir que muitos usuários acessem os mesmos arquivos simultaneamente, sem aumentar a carga nos bancos de dados de back-end. E se um aplicativo frequentemente apresenta picos de uso e alto rendimento, os caches na memória podem mitigar a latência.

Para que o cache é usado?

Cache de saída

O cache de saída ajuda a aumentar o desempenho da página da Web, armazenando o código-fonte completo das páginas, como HTML e scripts de cliente que um servidor envia aos navegadores para renderização. Toda vez que um usuário vê a página, o servidor armazena em cache o código de saída na memória do aplicativo. Isso permite que o aplicativo atenda solicitações sem executar o código da página ou se comunicar com outros servidores.

Cache de dados e cache de banco de dados

A velocidade e o rendimento do banco de dados podem ser fatores-chave no desempenho geral do aplicativo. O cache de banco de dados é usado para chamadas frequentes aos dados que não são alterados com frequência, como dados de estoque ou de preços. Ele ajuda sites e aplicativos a carregarem mais rapidamente, ao mesmo tempo que aumenta o rendimento e reduz a latência de recuperação de dados de bancos de dados back-end.

Como armazenar dados de sessão do usuário

Os usuários de aplicativos geralmente geram dados que devem ser armazenados por curtos períodos. Um armazenamento de dados na memória como o Redis é perfeito para armazenar de maneira eficiente e confiável grandes volumes de dados de sessão, como entradas do usuário, entradas de carrinho de compras ou preferências de personalização, a um custo menor do que armazenamento ou bancos de dados.

Corretores de mensagens e arquiteturas de publicação/assinatura

Os aplicativos em nuvem geralmente precisam trocar dados entre serviços e podem usar o cache para implementar arquiteturas de publicação/assinatura ou de corretor de mensagens que reduzem a latência e aceleram o gerenciamento de dados.

Aplicativos e APIs

Assim como os navegadores, os aplicativos salvam arquivos e dados importantes para recarregar rapidamente essas informações quando necessário. As respostas de API armazenadas em cache eliminam a demanda ou a carga em servidores de aplicativos e bancos de dados, proporcionando tempos de resposta mais rápidos e melhor desempenho.

[1] As declarações de desempenho baseiam-se em dados de um estudo encomendado pela Microsoft e conduzido pela GigaOm em outubro de 2020. O estudo comparou o desempenho de uma aplicação de teste utilizando uma base de dados Azure com e sem implementação do Azure Cache para Redis como solução de cache. O Banco de Dados SQL do Azure e o Banco de Dados Azure para PostgreSQL foram usados como elemento de banco de dados no estudo. Uma instância de 2 vCores Gen5 de Uso Geral do Banco de Dados SQL do Azure e uma instância de 2 vCores de Uso Geral do Banco de Dados do Azure para PostgreSQL foram usadas com uma instância P1 Premium de 6 gigabytes do Azure para Redis. Esses resultados foram comparados com instâncias de 8, 16, 24 e 32 vCores Gen5 de Uso Geral do Banco de Dados SQL do Azure e instâncias de 8, 16, 24 e 32 vCores de Uso Geral do Banco de Dados do Azure para PostgreSQL sem o Cache do Azure para Redis. Os dados do parâmetro de comparação foram obtidos do Teste de Carga do Banco de Dados do Aplicativo Web GigaOm, que simula um aplicativo Web comum e o banco de dados de back-end com uma grande pressão acumulada devido ao aumento de solicitações HTTP. Os resultados reais podem variar com base na configuração e na região. Veja o estudo completo.

Conta gratuita

Experimente os serviços de computação em nuvem do Azure gratuitamente por até 30 dias.

Pagamento conforme o uso

Comece com preços pagos conforme o uso. Não há um compromisso antecipado, cancele a qualquer momento.

Adicione uma camada de cache ágil ao seu aplicativo com um serviço Redis totalmente gerenciado. Saiba como começar a usar o Cache do Azure para Redis.

Se você quiser executar um cache flexível baseado em arquivo para aplicativos de alto desempenho, leia sobre o Azure HPC Cache.