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:
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:
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:
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:
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.