A busca lenta e repetitiva de dados está fazendo com que seu aplicativo tenha um desempenho inferior? Tente armazenar em cache para resolver o problema.
A criação de aplicativos da Web rápidos e confiáveis é mais importante do que nunca no cenário digital atual. Os usuários têm grandes expectativas quando se trata de desempenho do site. Tempos de carregamento lentos ou tempo de inatividade podem levar à frustração do cliente e danos à reputação.
Uma maneira de obter aplicativos da Web rápidos e confiáveis é por meio do uso de cache. Existem diferentes tipos de caches que você pode implementar em seu aplicativo, incluindo cache na memória, cache do navegador, cache do banco de dados e cache CDN.
O que é cache e como o cache na memória difere? Como você pode aumentar o desempenho do seu aplicativo Nest.js com o cache na memória?
O que é cache?
Cache é o processo de armazenar dados acessados com frequência em um local temporário para melhorar o desempenho de um aplicativo ou sistema. Os dados armazenados em cache podem ser rapidamente recuperados e fornecidos ao usuário sem a necessidade de recuperá-los novamente da fonte original.
Os aplicativos usam cache para fornecer conteúdo com mais rapidez e eficiência, o que leva a uma melhor experiência do usuário e carga reduzida nos sistemas subjacentes. Os tipos mais comuns de cache incluem cache na memória, Cache CDN, cache do navegador e cache do banco de dados.
O que é cache na memória?
O cache na memória é um tipo de cache no qual um aplicativo armazena temporariamente os dados acessados com frequência na memória do servidor. Em vez de fazer chamadas de banco de dados caras toda vez que o aplicativo processa uma solicitação para acessar dados, ele pode buscar esses dados na memória.
Armazenar os dados em cache na memória significa que o aplicativo acessa os dados mais rapidamente e isso resulta em melhor desempenho.
Como implementar o cache na memória em um aplicativo Nest.js
O Nest.js tem suporte integrado para armazenamento em cache usando drivers como Redis, Memcached e muitos outros. No entanto, para facilitar a compreensão, este artigo usa o módulo de cache de memória integrado fornecido pelo Nest.js.
Esta seção pressupõe que você já tenha um aplicativo Nest.js criado com o comando Nest CLI: aninhar novo [nome do aplicativo]. Para implementar o cache na memória em um terminal, você já deve ter o módulo, o serviço e os arquivos do controlador ou gerá-los usando o ninhogerar comando. Você pode saber mais sobre gerar ninho no Documentação da Nest CLI.
A primeira etapa para implementar um cache na memória é importar o CacheModule de @nestjs/common no módulo do seu endpoint, conforme mostrado abaixo:
// exemplo.module.ts
importar { Módulo, CacheModule } de'@nestjs/common';@Módulo({
importações: [CacheModule.register()],
})
exportaraula Módulo de exemplo {}
Em seguida, você precisa importar CacheService e injetá-lo no serviço Nest.js que se comunica com um banco de dados como MongoDB. Você pode ver como o seguinte exemplo de código faz isso:
// exemplo.service.ts
importar { Injetável, CacheService } de'@nestjs/common';@Injetável()
exportaraula ExemploServiço {
construtor(privado cacheService somente leitura: CacheService) {}assíncrono Obter dados(): Promessa<qualquer> {
const cacheKey = 'meus dados';
deixar dados = aguardamesse.cacheService.get (cacheKey);se (!dados) {
// busca dados do banco de dados ou API
dados = aguardamesse.fetchData();// dados em cache para uso futuro
aguardamesse.cacheService.set (cacheKey, dados, { ttl: 60 });
}retornar dados;
}
privadoassíncrono buscarData(): Promessa<qualquer> {
// busca dados do banco de dados
}
}
No código de exemplo acima, o ExemploServiço usa CacheService como uma dependência. O Obter dados O método verifica se os dados estão disponíveis no cache usando uma chave (cacheKey), se os dados não estiverem no cache, ele vai buscá-los no banco de dados e os armazena em cache para uso posterior.
O CacheService tem um definir método que recebe um objeto como um argumento. Neste caso, você pode ver como o valor { ttl: 60 } define o tempo de vida para 60 segundos. Isso implica que o serviço removerá automaticamente os dados em cache após um minuto.
Algumas vantagens importantes do cache na memória incluem o seguinte:
- Escalabilidade aprimorada: O cache na memória pode ajudar a melhorar a escalabilidade dos aplicativos, reduzindo a carga na fonte de dados subjacente.
- Tempo de resposta mais rápido: O armazenamento em cache de dados acessados com frequência na memória reduz o tempo necessário para recuperar os dados, resultando em tempos de resposta mais rápidos.
- Melhor experiência do usuário: Tempos de resposta mais rápidos e escalabilidade aprimorada podem ajudar a fornecer uma melhor experiência do usuário, reduzindo o tempo de espera e melhorando o desempenho geral do aplicativo.
- Custos reduzidos: Ao reduzir a carga na fonte de dados, o cache na memória pode ajudar a reduzir o custo de execução do aplicativo.
Otimizando aplicativos Nest.js com cache na memória
O cache na memória é uma maneira muito eficaz de melhorar o desempenho geral do aplicativo. Você viu como implementar um cache na memória no Nest.js e como ele melhora a escalabilidade e a experiência do usuário. Ele também pode melhorar o tempo de resposta e reduzir os custos de execução de seu aplicativo.
Tente colocar o conceito de armazenamento em cache em uso prático ao criar sua próxima API ou aplicativo Nest.js.