Back-End

29 ago, 2018

Série Redis on Azure – Criando nossa base Redis e desenvolvendo nosso primeiro Cache

100 visualizações
Publicidade

Introdução

Seguindo a nossa série sobre a utilização do Redis no Azure, nesse artigo vamos criar nossa base Redis e vamos desenvolver um exemplo. Caso tenha perdido o artigo anterior, ele pode ser acessado através deste link.

Vale lembrar que, caso ainda não tenha uma subscription no Azure, será necessário criar uma (caso queira um passo a passo, clique aqui).

Criando nosso Redis no Azure

Primeiro vamos acessar o Portal do Azure através do link: https://portal.azure.com e efetuar o nosso login. Já no portal do Azure, vamos clicar em “Create a Resource>Databases>Redis Cache“, conforme na figura abaixo:

Figura 1

Feito isso, vamos preencher os dados e depois clicar em “Create” para a criação do nosso serviço de cache, conforme nos mostra a figura 2 abaixo:

Figura 2

O processo para finalizar a criação do serviço leva em média 15 minutos, e assim que ele terminar, acesse o Redis e clique em “Keys“. Em seguida, copie o endereço da Primary connection string, conforme nos mostra a figura abaixo:

Figura 3

Agora vamos esquecer por um breve momento o Azure e vamos criar uma aplicação do tipo Web API utilizando o ASP.NET Core 2. Se estiver usando o Visual Studio Code, é só abrir o terminal, navegar até a pasta desejada e digitar o comando:

dotnet new webapi

Após o termino da criação do projeto, abra o arquivo appsettings.json e crie uma conexão com a string de conexão do Redis que copiamos anteriormente, conforme o código abaixo:

"ConnectionStrings": {
    "RedisConn": "conexão do seu redis"
  }

Agora no nosso arquivo Startup.cs, vamos adicionar o seguinte código:

services.AddDistributedRedisCache(options =>
       {
         options.Configuration = Configuration.GetConnectionString("RedisConn");
         options.InstanceName = "OpenSourceSaturday";
       });

E por último, vamos criar um Controller chamado RedisCacheController e dentro dele no método Get, vamos criar nosso cache através da Interface IDistributedCache, utilizando o código abaixo (comentários no próprio código para melhor entendimento):

public class RedisCacheController : Controller
    {
        private readonly IDistributedCache _distributedCache;
    
        public RedisCacheController(IDistributedCache distributedCache)
        {
            _distributedCache = distributedCache;
        }

        // GET api/RedisCache
        [HttpGet]
        public string Get()
        {
            //Variável que vai receber uma data
            var date = string.Empty;
            //Key utilizada para armazenarmos o nosso cache (que será a data)
            var key = "distributedCacheKey";

            //Verifico se o cahce já existe
            date = _distributedCache.GetString(key);
            //Se existir exibo o texto Data cache com a data cacheada.
            if (!string.IsNullOrEmpty(date))
            {
                return string.Concat("Data cache: ", date);
            }
            //Senão criamos nosso cache com a data atual
            else
            {
                date = DateTime.Now.ToString();
                /* Nesta linha diz que o cache permanecera ativo para sempre desde que num periodo de 10 segundos alguém acesse ele.
                Caso você deseje que o cache desapareça em um determinado periodo de tempo independentemente de acesso,
                troque o comando SetSlidingExpiration para SetAbsoluteExpiration. */
                var cacheExpiration = new DistributedCacheEntryOptions().SetSlidingExpiration(TimeSpan.FromSeconds(10));
                //Cache sendo criado
                _distributedCache.SetString(key, date, cacheExpiration);
                //Retorno a Data atual pois ainda não havia nenhum cache com a key distributedCacheKey
                return string.Concat("Data atual: ", date);
            }
        }
    }

Agora execute o projeto e veja que inicialmente ele trouxe a Data atual. Se você atualizar seu browser, verá que ele mudará o texto para Data cache sem alterar a data em si.

Para você visualizar o cache em si salvo no Redis, volte novamente para o Portal do Azure e clique em >_ Console, para abrir o console do Redis e nele digite monitor. Feito isso, execute novamente a aplicação e observe a sua Key e a data cacheada conforme mostra a figura abaixo:

Figura 4
Figura 5

Como você pode observar, o mesmo data cacheado na tela é o mesmo que está salvo no Redis.

No próximo artigo da série utilizaremos outras maneiras de criar nosso cache e de administra-lo. E assim termino mais um artigo, espero que tenham gostado e até o próximo.