ASP .NET Core – Utilizando Cache In-Memory

Faaaala galera! Faz um tempo que não escrevo algo, porém, comecei 2018 com planos de escrever frequentemente 😀

Decidi começar o ano falando sobre cache, inicialmente sobre o cache in-memory.

Introdução

O cache é uma maneira muito eficiente de aumentar consideravelmente a performance  e escalabilidade de sua aplicação; ele evita processamento no servidor, como uma requisição no banco de dados, por exemplo. Assim sendo, as informações serão apresentadas de maneira mais rápida. É possível configurar o cache para que dure algum tempo, horas, dias, anos e por aí vai.

O cache funciona melhor com conteúdos que não são frequentemente alterados, pois ele faz uma “cópia” dos dados que serão retornados mais velozmente que do lugar original.

Cache no ASP .NET Core

O ASP .NET Core dá suporte a vários tipos de cache. O mais simples é baseado na interface IMemoryCache, onde o cache é salvo na memória do servidor web. Quando utilizamos vários servidores em escala é importante assegurar-nos de que o cache está indo para um único servidor.

O IMemoryCache irá remover o cache da memória de acordo com a alocação de memória para outros recursos, você pode ler mais aqui. Porém, se você definir a prioridade do cache para “nunca remover”, ele sempre continuará lá. Vou mostrar como fazer isso daqui a pouco!

Chega de teoria e bora colocar a mão na massa!

O cache in-memory é adicionado na classe Startup da sua aplicação via injeção de dependência como podemos ver a seguir:

Em seguida, devemos utilizá-la no construtor da classe em que vamos brincar com o cache, a interface IMemeryCache vem do pacote Microsoft.Extensions.Caching.Memory do NuGet no caso desse exemplo, vou utilizar o meu Controller mesmo:

Vou fazer um exemplo com a data e hora atuais pra ficar bem didático, vejam o código a seguir, onde verificamos se existe a data no cache, e caso não exista, colocamos a data lá.

A minha View está da seguinte maneira:

E o resultado por enquanto está assim:
PrimeiraVez

O valor permanecerá no cache até o tempo limite, que em nosso caso é de 5 segundos.

Vejam este outro método onde vamos utilizar o método “GetOrCreate” para executar a mesma tarefa, aqui também vou colocar a prioridade para o cache nunca ser removido por alocação de memória.

E percebam, que a função só vai ser executada caso não exista valor no cache, do contrário, o que está entre as chaves não é executado.

Aqui vocês podem ver como está a View chamada por essa Action.

E o resultado final:
GetOrCreate

O resultado é o mesmo, porém de uma maneira diferente e mais elegante de se escrever.

Ainda podemos remover um cache, utilizando o seguinte comando:

Fácil né?

Os exemplos de código estão disponíveis no GitHub: https://github.com/vmussak/NetCoreInMemoryCache/

Por hoje é só, qualquer dúvida ou sugestão, estou à disposição! Até mais 😀

Anúncios

One thought on “ASP .NET Core – Utilizando Cache In-Memory

  1. Thalles Mendes 03/01/2018 / 07:57

    Otimo artigo, conteúdo bem útil, de fácil entendimento, direto ao ponto sem enrolação. Parabéns

    Gostar

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão /  Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão /  Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão /  Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão /  Alterar )

Connecting to %s