Udocs.me

Memory Cache em ASP.NET Core

Image

Hoje em dia é comum, muito comum que uma aplicação seja acessada por vários sistemas, e vários dispositivos. Falo isso porque o Web API está muito popular e está bem concentrado. A web, mobile e desktop está acessando diretamente os dados pelo Web API conhecido como end-point, web service e agora web api. Pode vir até outros nomes mais no futuro, mas a base é a mesma. Tente entender:

a) Alguém chama um serviço passando alguns dados que retorna outros.

b) O serviço verifica a regra de negócio e acessa o banco de dados passando os parâmetros.

c) O banco de dados retorna os dados e o serviço transforma os dados em um formato leve para a leitura dos dados, tratando cada um de forma mais simples e tranquila.

O cache significa que os dados podem ser retornados de forma mais rápida para você, não importa se é web, mobile ou desktop. O cache faz uma cópia dos dados que pode ser retornado de forma rápida com os dados originais do banco de dados. Eu fiz um exemplo no meu GitHub e no final tem o link para download caso você precisar.

O ASP.NET Core possui suporte para diferentes tipos de cache e um simples cache pode ser baseado em IMemoryCache. Esse cache representa guardar os dados em memória do servidor. E isso é muito importante principalmente para Web API que é hospedado no servidor Azure e outros por ai.

Você pode colocar para o cache ser prioritário, nunca ser removido e outras opções. Pode ser guardado qualquer tipo de objeto mas é limitado, então tome cuidado.

O primeiro passo foi usar o:

using Microsoft.Extensions.Caching.Memory;

Depois basta criar algumas instâncias para iniciar, veja:

private readonly bool useCache;

private static MemoryCache cache = new MemoryCache(new MemoryCacheOptions());

Você pode criar uma lista e atribuir os dados ao cache:

cache.Set("dhl-pickups", pickups);

O pickups é um ToList() de uma classe com Get e Set normal.

Para pegar o resultao basta utilizar o Get.

var result = cache.Get("dhl-pickups") as List<Pickup>;

Note que foi dado um chave chamada dhl-pickups e através dela podemos pegar os dados armazenados em memória.

Você pode ver mais o código no seguinte link https://github.com/mauricio-junior/MemoryCache com o código fonte. Espero que tenha gostado e qualquer dúvida pode entrar em contato pelo site https://www.mauriciojunior.org.


Autor: Mauricio Junior
Revista ecode10 Magazine