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.