This is the Trace Id: bda262cf822417462fef304ffe577822
Avançar para o conteúdo principal
Azure
fundo com gradação

O que é a colocação em cache?

Saiba como a colocação em cache melhora o desempenho e a eficiência do sistema.

Significado da colocação em cache

A colocação em cache mantém na memória cópias reutilizáveis de dados acedidos com frequência, para que as aplicações evitem chamadas repetidas à base de dados e devolvam resultados mais rapidamente.

Principais conclusões

  • A colocação em cache armazena na memória rápida os dados pedidos com frequência, para que as aplicações possam responder mais depressa sem consultar sempre a base de dados primária.
  • Um pedido típico verifica primeiro a cache; se ocorrer uma falha de acerto na cache, solicita os dados ao arquivo de origem e atualiza a cache ao utilizar padrões comuns de leitura/escrita.
  • Quando é bem implementada, a colocação em cache reduz a latência e a carga no back-end, ajuda a processar picos de tráfego e dá suporte a cenários comuns, como sites, APIs e estado de sessão.
  • A colocação em cache ocorre em várias camadas e funciona melhor quando se escolhem dados estáveis com elevada frequência de leitura e se mantém uma fonte fidedigna durável com um plano de contingência.

Compreender a colocação em cache

O que é uma cache?

A colocação em cache consiste em armazenar dados de chave-valor na memória temporária (por exemplo, numa base de dados (NoSQL) de linguagem SQL (Structured Query Language) não relacional) para que as aplicações consigam obtê-los mais rapidamente do que a partir do armazenamento convencional. Nas arquiteturas de armazenamento na nuvem, em que os pedidos atravessam frequentemente redes e acedem a serviços partilhados, a colocação em cache pode ajudar a manter tempos de resposta reduzidos e a diminuir o trabalho repetido.

Como funciona a colocação em cache?

A maioria dos sistemas mantém uma "fonte fidedigna" durável (uma base de dados) para os conjuntos de dados completos e, em seguida, mantém uma cache para subconjuntos temporários que são lidos com frequência. Quando chega um pedido, a aplicação verifica primeiro a cache; se os dados estiverem disponíveis, devolve-os rapidamente sem voltar a consultar o back-end. Os programadores também colocam dados processados em cache e reutilizam-nos para processar pedidos mais rapidamente do que com consultas padrão a bases de dados relacionais, bases de dados SQL ou bases de dados PostgreSQL open-source.

Princípios fundamentais da colocação em cache

1. Coloque em cache os dados lidos com frequência

Os bons candidatos incluem dados lidos repetidamente e dados que mudam com pouca frequência, como informações sobre produtos e preços ou recursos estáticos partilhados cuja criação é dispendiosa.

2. Coloque em cache os resultados de trabalho repetido

Se uma operação transformar dados ou efetuar um cálculo complexo, a colocação do resultado em cache pode evitar que o mesmo seja recalculado para pedidos posteriores.

3. Utilize camadas de cache quando necessário

Os programadores utilizam caches de vários níveis ("camadas de cache") para armazenar diferentes tipos de dados em caches separadas consoante a procura. Adicionar uma ou mais camadas de cache pode melhorar o débito e a latência numa camada de dados.

4. Mantenha o estado de sessão junto das aplicações adaptáveis

Os arquivos na memória são frequentemente utilizados para conservar, durante períodos curtos, volumes elevados de dados de sessão, como entrada de utilizador, itens do carrinho de compras ou preferências de personalização. Nas aplicações com estado, as equipas também armazenam o estado de sessão na cache para que a camada da aplicação possa permanecer sem estado.

Impacto no desempenho do sistema

A colocação em cache pode melhorar o desempenho de várias formas concretas:

  • A leitura de dados a partir de uma cache na memória é mais rápida do que o acesso a dados num arquivo em disco.
  • Um menor número de consultas pode reduzir a carga e limitar a necessidade de dimensionar a infraestrutura de bases de dados, o que também pode reduzir os custos.
  • As camadas de cache podem melhorar o débito e a latência, e as caches na memória podem ajudar a atenuar a latência durante picos de utilização.
  • Uma instância de cache pode processar milhões de pedidos por segundo, ao proporcionar um débito ao qual muitas bases de dados não conseguem corresponder.

Como funciona a colocação em cache?

O fluxo básico: cache + arquivo de dados de origem

Em muitas arquiteturas de cloud, uma cache fica junto de um arquivo de dados principal, como uma base de dados. O arquivo principal contém o conjunto de dados completo e durável no servidor cloud, ao passo que a cache mantém um subconjunto mais reduzido e temporário, cuja leitura é mais rápida.

Uma configuração comum consiste numa camada de cache autónoma ou numa cache existente na camada da aplicação ou da base de dados, escolhida consoante o local onde são necessárias leituras rápidas.

Camadas de cache: mais do que um "caminho rápido"

Alguns sistemas utilizam colocação em cache de vários níveis ("camadas de cache"), para que diferentes tipos de dados residam em caches distintas consoante a procura. Adicionar uma ou mais camadas de cache pode melhorar o débito e a latência da camada de dados e reduzir o custo global ao diminuir a carga no back-end.

O que é colocado em cache (e porquê)

Normalmente, as equipas colocam em cache dados que se enquadram em alguns registos:

  • Dados lidos com frequência, sobretudo quando mudam com pouca frequência, como informações sobre produtos ou preços e recursos estáticos partilhados cuja criação é dispendiosa.
  • Cálculos repetidos, em que uma operação transforma dados ou efetua um cálculo complexo; colocar o resultado em cache evita repetir o mesmo trabalho em pedidos posteriores.
  • Estado de sessão para aplicações com estado, em que armazenar o estado de sessão na cache pode ajudar a manter a camada da aplicação sem estado.

Padrões comuns de colocação em cache (fluxos de trabalho de leitura/escrita)

Existem várias formas padrão de as aplicações lerem dados da cache e escreverem dados na mesma. Conheça os padrões mais comuns e o respetivo significado na prática.

  • Cache-aside: carregue os dados a pedido a partir de um arquivo de dados.
  • Leitura através da cache: leia a partir da cache; se necessário, a cache obtém os dados do arquivo de dados.
  • Escrita através da cache: escreva na cache; a mesma volta a sincronizar-se com o arquivo de dados de forma síncrona.
  • Escrita posterior (escrita diferida): escreva na cache; a mesma escreve posteriormente os dados no arquivo de dados em lotes.
  • Escrita fora da cache: escreva no arquivo de dados e leia a partir da cache; a cache é atualizada a pedido.

Por que motivo esta abordagem reduz a carga e acelera o processamento

Utilizar camadas de cache pode melhorar o débito e a latência ao processar pedidos comuns a partir da cache, em vez de consultar repetidamente o arquivo do back-end. Esta abordagem pode reduzir a necessidade de dimensionar a infraestrutura de bases de dados, porque, à partida, chegam menos pedidos à base de dados.

Nas aplicações com picos de utilização, as caches na memória podem ajudar a atenuar a latência ao manter os dados pedidos com frequência próximos do local onde são utilizados.

Guia rápido: escolha um padrão

Utilize estas opções como ponto de partida ao escolher um fluxo de trabalho:

  • Prefira o padrão cache-aside quando a sua aplicação puder decidir o que armazenar e quando atualizar os dados.
  • Prefira a leitura através da cache quando pretender que a cache processe a obtenção dos dados a partir do arquivo, "se necessário".
  • Considere a escrita através da cache ou a escrita posterior quando o comportamento de escrita for importante e pretender uma abordagem de ressincronização definida.

Benefícios e aplicações da colocação em cache

Respostas mais rápidas com menos trabalho no back-end

A colocação em cache melhora o desempenho das aplicações porque a leitura a partir de uma cache na memória é mais rápida do que a leitura a partir de um arquivo de dados em disco. Quando são processados mais pedidos a partir da cache, os sistemas enviam menos consultas às bases de dados do back-end, o que pode reduzir a necessidade de dimensionar a infraestrutura de bases de dados e diminuir os custos associados.

O que a colocação em cache proporciona habitualmente
  • Menor latência nas leituras comuns, uma vez que os dados pedidos com frequência provêm de uma camada mais rápida.
  • Menor carga e custo da base de dados, porque a colocação em cache origina menos consultas à base de dados e reduz a pressão para sobredimensionar as respetivas instâncias.
  • Débito mais previsível, uma vez que uma cache pode processar um volume de pedidos muito elevado comparativamente com muitas bases de dados.
  • Processamento mais uniforme dos picos de tráfego, porque as caches na memória podem atenuar a latência durante períodos de débito elevado.

Melhor utilização dos recursos de computação e armazenamento

A colocação em cache ajuda a reduzir o trabalho repetido. Os dados lidos repetidamente ou cuja criação é dispendiosa podem ser armazenados uma vez e reutilizados. Se uma operação efetuar um cálculo complexo ou transformar dados, colocar o resultado em cache reduz os cálculos repetidos nos pedidos posteriores.

Candidatos comuns a uma "boa cache"
  • Dados que mudam com pouca frequência, como informações sobre produtos e preços.
  • Recursos estáticos partilhados cuja criação é dispendiosa.
  • Resultados de operações calculados repetidamente.

Aplicações práticas (onde é utilizada a colocação em cache)

Sites: carregamentos de páginas mais rápidos e menos ciclos de comunicação

Muitos sites colocam em cache o resultado da página, como HTML e scripts de cliente, para que o servidor possa devolver o resultado em cache em vez de voltar a executar sempre o código da página. A colocação em cache também dá suporte a cenários de multimédia Web através de caches Web e da colocação em cache na rede, como as redes de entrega de conteúdos (CDNs).

Utilizações típicas em sites
  • Coloque em cache o resultado completo da página para visualizações repetidas.
  • Coloque recursos estáticos em cache através da colocação em cache na rede ou numa CDN.
Aplicações e APIs: leituras mais rápidas de dados partilhados

As aplicações armazenam frequentemente subconjuntos temporários de dados numa cache para permitir uma obtenção rápida, enquanto a base de dados primária conserva o conjunto de dados completo e durável. Ao colocar dados processados em cache e reutilizá-los, é possível processar pedidos mais rapidamente do que com consultas padrão à base de dados.

Padrões comuns das aplicações
  • Coloque em cache dados de referência lidos com frequência, como preços, para reduzir as chamadas repetidas à base de dados.
  • Coloque em cache os resultados calculados para evitar repetir trabalho dispendioso.
Servidores e serviços: dimensionamento da capacidade de leitura e atenuação de picos

As equipas adicionam frequentemente uma ou mais camadas de cache para melhorar o débito e a latência, ao processar consultas comuns a partir da cache e reduzir a carga da base de dados. As caches na memória podem ajudar quando a utilização aumenta subitamente e os requisitos de débito aumentam, ao atenuar a latência durante esses períodos.

Onde esta abordagem é mais útil
  • Pontos finais com um volume elevado de leituras, nos quais as mesmas chaves são pedidas com frequência.
  • Sistemas com picos periódicos de tráfego.
Sistemas empresariais: estado de sessão e dados operacionais partilhados

A colocação em cache é frequentemente utilizada para armazenar volumes elevados de dados de sessão de curta duração, como entrada de utilizador ou preferências de personalização, num arquivo na memória. Algumas equipas também armazenam o estado de sessão na cache para que as aplicações com estado possam manter a camada da aplicação sem estado. Nos sistemas de operações, os dados que mudam com pouca frequência, como informações sobre produtos e preços, são um alvo comum da colocação em cache.

Exemplos aplicáveis a cargas de trabalho empresariais
  • Dados de sessão para aplicações Web e aplicações móveis (curta duração, volume elevado).
  • Dados de referência operacionais lidos com frequência (preços, recursos partilhados).

Tipos de cache

A colocação em cache ocorre em várias camadas entre uma aplicação e os respetivos dados, tanto do lado do cliente como do lado do servidor.

Cache do browser (do lado do cliente)

Uma cache do browser armazena cópias de recursos estáticos no dispositivo do utilizador, para que, em visitas posteriores, seja possível reutilizar esses ficheiros em vez de os transferir novamente.

Casos de utilização comuns
  • Recursos estáticos de sites, como imagens, ficheiros CSS e ficheiros JavaScript.
  • Redução dos ciclos de comunicação com o servidor de origem para recursos obtidos anteriormente.

Cache do lado do servidor

A colocação em cache do lado do servidor ocorre nos processos que executam serviços empresariais remotamente, e não no dispositivo do utilizador final. As caches do lado do servidor são frequentemente privadas (locais numa única instância de aplicação) ou partilhadas (utilizadas por várias instâncias de aplicação).

Casos de utilização comuns
  • Cache privada na memória dentro de um único processo para quantidades moderadas de dados estáticos.
  • Serviço de cache partilhada para que várias instâncias de aplicação leiam os mesmos valores em cache e evitem "versões diferentes" entre instâncias.
  • Dados lidos com frequência, mas modificados com pouca frequência, como dados de referência sobre produtos e preços.

Cache da CDN

Uma CDN coloca conteúdo em cache em servidores periféricos mais próximos dos utilizadores finais, para que os pedidos nem sempre tenham de regressar ao servidor de origem. Ao contrário de uma cache do browser, utilizada por um único utilizador, uma cache da CDN é partilhada: o pedido de um utilizador pode povoar a cache com conteúdo que outro utilizador receberá mais tarde.

Casos de utilização comuns
  • Entrega partilhada de conteúdo passível de ser colocado em cache a partir de localizações periféricas, para reduzir os pedidos ao servidor de origem.
  • Recursos estáticos que beneficiam de ser disponibilizados perto dos utilizadores (os mesmos tipos de recursos que os browsers colocam em cache, mas partilhados entre utilizadores).

Cache da CPU/memória

A colocação em cache não é apenas um padrão de computação na cloud; as camadas de hardware e memória também a utilizam.

A cache da CPU é uma área de memória pequena e rápida, próxima do processador ou integrada no mesmo, que armazena cópias de dados e instruções utilizados com frequência para reduzir o tempo que o processador passa a aguardar pela memória principal.

A cache de memória (na memória) é o tipo mais simples de cache de software: um arquivo na memória mantido no espaço de endereços de um único processo e acedido diretamente por esse processo.

Casos de utilização comuns
  • Cache da CPU: acesso repetido às mesmas instruções/aos mesmos dados sem consultas frequentes à memória principal.
  • Cache na memória: leituras rápidas de quantidades moderadas de dados relativamente estáticos num único serviço em execução.

Colocação em cache distribuída

Uma cache distribuída abrange vários servidores, o que permite aumentar a cache e a capacidade transacional para além de um único computador. Muitos serviços de cache partilhada utilizam um cluster de servidores e distribuem os dados em cache pelo cluster; dimensionar a cache pode ser tão simples como adicionar mais servidores. Algumas arquiteturas distribuídas também utilizam camadas de cache, para que uma falha de acerto numa camada solicite os dados a um fornecedor a montante e, em seguida, armazene o resultado localmente para o pedido seguinte.

Casos de utilização comuns
  • Uma camada de cache partilhada para várias instâncias de aplicação e vários computadores.
  • Cargas de trabalho que necessitam de uma capacidade e de um débito de cache superiores aos de um único anfitrião.
  • Configurações com camadas de cache em que, após uma falha de acerto, os dados são obtidos a montante e, em seguida, é mantida uma cópia local para pedidos posteriores.

Comece a utilizar a colocação em cache

Por que motivo a colocação em cache continua a ser importante

A colocação em cache mantém os dados acedidos com frequência mais próximos do local onde são utilizados, o que pode melhorar os tempos de resposta e ajudar um sistema a processar mais pedidos simultâneos. Também pode reduzir a contenção no arquivo de dados original, por exemplo, quando uma base de dados tem um número limitado de ligações.

Nas aplicações distribuídas, a colocação em cache ocorre frequentemente em mais do que um local: do lado do cliente, como num browser, e do lado do servidor, numa aplicação ou num serviço de cache partilhada.

Uma forma prática de começar

Comece de forma simples e concentre-se nos dados que proporcionam um retorno mais evidente:

  • Coloque em cache dados com elevada frequência de leitura, cuja obtenção seja lenta e que mudem com pouca frequência, como dados de referência.
  • Decida quando os dados entram na cache:
    • A pedido após o primeiro pedido, para armazenar apenas o que é realmente utilizado.
    • Povoe previamente (seed) alguns itens no arranque do sistema se souber que serão pedidos logo no início e monitorize a carga de arranque no arquivo original.
  • Escolha um padrão que consiga gerir. O padrão de cache-aside é comum, e a respetiva orientação salienta a forma como a expiração, a expulsão e a consistência afetam os resultados.

Mantenha os dados em cache atualizados (e o seu sistema resiliente)

Normalmente, uma cache contém cópias dos dados de um arquivo principal, pelo que é necessário ter em conta a recência:

  • Utilize políticas de expiração para limitar o tempo durante o qual os dados podem permanecer na cache antes de serem atualizados.
  • Observe o comportamento de expulsão quando as caches ficam cheias (muitos sistemas expulsam, por predefinição, os itens menos recentemente utilizados).
  • Não trate a cache como a única localização dos dados críticos. Mantenha a fonte fidedigna no armazenamento persistente, para que o sistema possa continuar a funcionar se a cache não estiver disponível.
  • Planeie um caminho de contingência para o arquivo de dados original caso não seja possível aceder à cache e povoe-a novamente à medida que forem efetuadas leituras.

A colocação em cache é um bloco modular essencial dos sistemas modernos, porque se adapta a muitas arquiteturas: serviços individuais, aplicações distribuídas e entrega na periferia. Para obter uma cache gerida na memória de um fornecedor de cloud, explore o Azure.

fundo com gradação
Recursos

Recursos

Formação
Recursos do Azure
Explore a mais recente tecnologia para programadores e desenvolva novas competências.
Educação
Recursos para estudantes de programação
Desenvolva competências para impulsionar a sua carreira e causar um impacto positivo no mundo.
Eventos
Eventos e webinars do Azure
Adquira novas competências, descubra novas tecnologias e estabeleça contacto com a sua comunidade; participe online ou presencialmente.
FAQ

Perguntas frequentes

  • A colocação em cache mantém os dados acedidos com frequência na memória rápida, para que as aplicações possam devolver resultados rapidamente sem consultar sempre a base de dados primária. Esta abordagem reduz a latência e a carga no back-end, o que ajuda os sistemas a processar mais pedidos simultâneos.
  • A colocação em cache melhora o desempenho ao disponibilizar os dados pedidos com frequência a partir da memória rápida, o que reduz a latência, a carga e o custo da base de dados, dá suporte a um volume elevado de pedidos e ajuda durante picos de tráfego.
  • Um exemplo é a colocação do resultado em cache: um servidor Web armazena na memória o resultado composto de uma página (HTML e scripts de cliente) e, em seguida, disponibiliza esse resultado em cache em visitas repetidas, em vez de voltar a executar o código da página.
  • Uma cache armazena um subconjunto de dados mais reduzido e temporário para acesso rápido, enquanto uma base de dados ou um armazenamento contém o conjunto de dados completo e durável para retenção de longo prazo. Se os dados em cache se perderem, a cópia permanente continua na base de dados; as caches não se destinam a ser a fonte fidedigna dos dados críticos.