Ignorar navegação

O que é cache?

Desenvolvedores e profissionais de TI usam o cache para salvar e acessar dados chave-valor na memória temporária mais rapidamente e com menos esforço do que os dados armazenados no armazenamento de dados convencional. Os caches são úteis em vários cenários com várias tecnologias, como cache de computador com memória RAM (memória de acesso aleatório), 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 projetaram aplicativos para armazenar em cache os dados processados e, em seguida, os realocam para atender às solicitações mais rapidamente do que nas consultas de banco de dados padrão.

Você pode usar o cache para reduzir os custos do banco de dados, oferecer uma taxa de transferência mais alta e uma latência menor do que a maioria dos bancos de dados pode oferecer e aumentar o desempenho de aplicativos Web e de nuvem.

Como o cache funciona para bancos de dados?

Os desenvolvedores podem complementar um banco de dados primário com um cache de banco de dados, que eles podem colocar dentro do banco de dados ou do aplicativo, ou configurar como uma camada autônoma. 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 repositórios de dados, incluindo bancos de dados NoSQL, bem como bancos de dados relacionais, como 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 PostgreSQL, Banco 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 repositórios de dados relacionais e não estruturados.

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

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

Redis é uma estrutura de dados na memória de software livre popular usada para criar camadas de cache de alto desempenho e outros armazenamentos de dados. Um estudo recente relatou que a adição de Cache do Azure para Redis a um aplicativo de exemplo aumentou taxa de transferência de dados em mais de 800% e melhorou o desempenho de latência em mais de 1.000 por cento1.

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 superprovisionar instâncias de banco de dados, resultando em economia significativa de custo e redução de TCO.

Tipos de cache

Sua estratégia de cache depende de como seu aplicativo lê e grava dados. O aplicativo é de gravação intensa 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 a dados influenciarão como você configura um cache. Os tipos de cache comuns incluem cache de lado, leitura/gravação e write-behind/write-back.

Cache reservado

Para aplicativos com cargas de trabalho de leitura pesadas, os desenvolvedores geralmente usam um padrão de programação de cache à parte ou "side-cache". Eles localizam o cache lateral fora do aplicativo, que pode se conectar com o cache para consultar e recuperar dados ou diretamente com o 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 impedir que os dados no cache sejam obsoletos.

Cache de leitura/gravação

Os caches de leitura mantêm-se atualizados, enquanto com o cache de write-through, o aplicativo grava dados no cache e, em seguida, no banco de dados. Ambos os caches estão em linha com o banco de dados, e o aplicativo os trata como o repositório de dados principal.

Os caches de leitura ajudam a simplificar os aplicativos nos quais os mesmos dados são solicitados várias vezes, mas o próprio cache é mais complexo, enquanto o processo de gravação em duas etapas pode criar latência. Os desenvolvedores emparelham os dois para ajudar a garantir a consistência de 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 write-behind/write-back

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

Cache distribuído versus repositório de sessão

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

O que é um repositório de sessão?

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

Como usar um repositório de sessão diferente do cache de um banco de dados?

Em um repositório de sessão, os dados não são compartilhados entre usuários diferentes, enquanto com o cache, usuários diferentes podem acessar o mesmo cache. Os desenvolvedores usam o cache para melhorar o desempenho de um banco de dados ou de uma instância de armazenamento, enquanto usam repositórios de sessão para aumentar o desempenho do aplicativo gravando dados no repositório na memória, eliminando a necessidade de acessar um banco de dados.

Os dados gravados em um repositório de sessão geralmente são de curta duração, enquanto os dados armazenados em cache com um banco de dados primário geralmente devem durar muito mais. Um repositório de sessão requer replicação, alta disponibilidade e durabilidade de dados para garantir que os dados transacionais não se perderão e que os usuários permaneçam envolvidos. Por outro lado, se os dados em um cache lateral forem perdidos, sempre haverá uma cópia dele no banco de dados permanente.

Benefícios do cache

Desempenho do Aplicativo Aprimorado

a leitura de dados de um cache na memória é muito mais rápida do que acessar dados de um armazenamento de dados controlado por disco. E com acesso mais rápido aos dados, a experiência geral do aplicativo melhora significativamente.

Uso e custos reduzidos do banco de dados

cache leva a menos consultas de banco de dados, melhorando o desempenho e reduzindo os custos limitando a necessidade de escalar a infraestrutura do banco de dados e diminuindo os encargos de taxa de transferência.

Desempenho escalonável e previsível

uma única instância de cache pode lidar com milhões de solicitações por segundo, oferecendo um nível de taxa de transferência e escalabilidade que os bancos de dados não podem corresponder. O cache também oferece a flexibilidade necessária para escalar horizontalmente ou dimensionar seus aplicativos e armazenamentos de dados. O aplicativo pode permitir que muitos usuários acessem os mesmos arquivos simultaneamente, sem aumentar a carga em bancos de dados back-end. E se um aplicativo geralmente passa por picos de uso e alta taxa de transferência, os caches na memória podem reduzir 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 de páginas, como HTML e scripts de cliente que um servidor envia aos navegadores para renderização. Sempre que um usuário exibe a página, o servidor armazenada em cache o código de saída na memória do aplicativo. Isso permite que o aplicativo sirva solicitações sem executar o código de página ou se comunicar com outros servidores.

Cache de dados e cache de banco de dados

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

Armazenando dados da sessão do usuário

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

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

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

Aplicativos e APIs

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

1declarações de desempenho são baseadas em dados de um estudo que foi encomendado pela Microsoft e realizado pela GigaOm em outubro de 2020. O estudo comparou o desempenho de um aplicativo de teste usando um banco de dados do Azure com e sem Cache do Azure para Redis como uma solução de cache. Banco de Dados SQL do Azure e Banco de Dados do Azure para PostgreSQL foram usados como elemento de banco de dados no estudo. Uma instância de 2 vCore Gen5 Uso Geral do Banco de Dados SQL do Azure e uma instância de Uso Geral vCore de Banco de Dados do Azure para PostgreSQL 2 vCore foram usadas com uma instância Premium P1 de 6 gigabyte do Azure para Redis. Esses resultados foram comparados às instâncias 8, 16, 24 e 32 vCore Gen5 Uso Geral de instâncias Banco de Dados SQL do Azure e 8, 16, 24 e 32 vCore Uso Geral de Banco de Dados do Azure para PostgreSQL sem Cache do Azure para Redis. Os dados de benchmark são obtidos do Teste de Carga do Banco de Dados do Aplicativo Web GigaOm, que simula um aplicativo Web comum e um banco de dados back-end que é ativado com o aumento de solicitações HTTP. Os resultados reais podem variar com base na configuração e na região. Consulte o estudo completo.

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 Azure HPC Cache.

Podemos ajudar você?