Cache na memória em APIs mínimas
Asp.net Core fornece suporte para duas abstrações para trabalhar com cache, IMemoryCache e IDistributedCache. Enquanto o primeiro é usado para implementar o cache na memória, o último é usado para implementar o cache distribuído.
O seguinte uso de IMemoryCache Mostra como você pode recuperar dados do cache se os dados solicitados estiverem disponíveis. Se os dados solicitados não estiverem presentes no cache na memória, o aplicativo recuperará os dados do armazenamento de dados (usando um repositório), armazenará os dados no cache na memória e o retorne.
app.MapGet("authors/getall", (IMemoryCache cache,
IAuthorRepository authorRepository) =>
{
if (!cache.TryGetValue("get-authors",
out List authors))
{
authors = authorRepository.GetAll();
var cacheEntryOptions = new MemoryCacheEntryOptions()
.SetAbsoluteExpiration(TimeSpan.FromMinutes(5))
.SetSlidingExpiration(TimeSpan.FromMinutes(1));
cache.Set("get-authors", authors, cacheEntryOptions);
}
return Results.Ok(authors);
});
Como você pode ver no trecho de código anterior, o conteúdo em cache reside na memória por um máximo de 30 segundos.
Cache distribuído em APIs mínimas
O cache distribuído aprimora o desempenho e a escalabilidade dos aplicativos, distribuindo a carga em vários nós ou servidores. Os servidores podem estar localizados na mesma rede ou em redes diferentes que estão espalhadas por distâncias geográficas.
O código a seguir demonstra como implementar o cache distribuído em um ponto de extremidade mínima da API no núcleo do asp.net. Neste exemplo, o endpoint retorna todos os registros do autor do cache distribuído se os dados estiverem disponíveis no cache. Se os dados solicitados não estiverem disponíveis no cache distribuído, o endpoint adicionará os dados ao cache e retornará os dados.
