StackExchange.Redis – acessando Redis com C#

redis
Facebooktwittergoogle_plusredditpinterestlinkedinmail

Hoje vamos ver como acessar o Redis (que já conhecemos aqui anteriormente) usando um client C#.  O client que vamos utilizar é o StackExchange.Redis.

Para começar, vamos criar uma nova aplicação console no Visual Studio. Após criar a aplicação, vamos instalar o StackExchange.Redis. Faremos isso usando o NuGet. Abra o NuGet Package Manager, e pesquise por StackExchange.Redis.

StackExchengeDemo-01

Agora que temos o client instalado, vamos conectar ver como conectar no Redis, para isso, vamos usar a classe ConnectionMultiplexer:

ConnectionMultiplexer connectionRedis = ConnectionMultiplexer.Connect("localhost:13919");

Se precisarmos nos autenticar no Redis, então temos que efetuar a conexão da seguinte forma:

ConnectionMultiplexer connectionRedis = ConnectionMultiplexer.Connect("localhost:13919,password=senhadoredis");

Um ponto importante, o ConnectionMultiplexer não deve ser criado a todo momento, ele tem um alto custo de criação, e deve ser armazenado para ser reutilizado sempre que necessário. Mais detalhes podem ser vistos no site oficial do ServiceExchange.Redis clicando aqui.

Após a conexão, devemos pedir ao ConnectionMultiplexer um IDatabase, que é o objeto responsável por enviar os comandos ao Redis, e fazemos isso assim:

IDatabase clientRedis = connectionRedis.GetDatabase();

Diferente do ConnectionMultiplexer, o IDatabase é barato de se criar, e não precisa ser reutilizado, podendo ser adquirido sempre que necessário.

Agora vamos criar uma chave no Redis:

clientRedis.StringSet("admin_sistema", "Desenvolvedor Ninja");

O método StringSet não representa a String do .net, e sim o tipo String do Redis, que é um dos tipos de valor suportados pelo banco. Em nosso primeiro post sobre o Redis falamos um pouco sobre os tipos de dados que o Redis suporta.

Agora vamos ler a chave que acabamos de gravar, e exibí-la no console:

Console.WriteLine(clientRedis.StringGet("admin_sistema"));

Usamos o método StringGet, para obter o valor da chave que desejamos e imprimir seu valor no console. Agora, vamos ver como fazemos para expirar uma chave no Redis:

clientRedis.KeyExpire("admin_sistema", TimeSpan.FromSeconds(600));

O método KeyExpire, recebe o nome da chave, e o tempo de expiração, que deve ser passado através de um objeto do tipo TimeSpan, ou um DateTime.

Também temos a opção de setar o tempo de expiração no momento que fazemos o SET da chave no Redis, da seguinte forma:

clientRedis.StringSet("admin_sistema", "Desenvolvedor Ninja", TimeSpan.FromSeconds(600));

Vamos agora consultar qual é o tempo que uma chave possui para expirar:

Console.WriteLine(clientRedis.KeyTimeToLive("admin_sistema"));

Usamos o método KeyTimeToLive, que retorna um objeto do tipo TimeSpan, com o tem que a chave tem de vida ainda no Redis, e imprimimos no console.

Agora, vamos ver como fazemos para retirar o tempo de expiração de uma chave, e torná-la permanente:

clientRedis.KeyPersist("admin_sistema");

E por fim, vamos ver como fazemos para apagar uma chave:

clientRedis.KeyDelete("admin_sistema");

E por fim, vamos encerrar a conexão com o Redis:

connectionRedis.Close();

Viu como é simples e fácil de interagir com o Redis usando C#? Vimos aqui apenas alguns comandos básicos, da mesma forma que vimos como acessar o Redis usando Go Language. Fique ligado que vamos trazer mais posts sobre o acesso ao Redis usando C#.

Para obter maiores informações sobre o ServiceExchange.Redis visite a página oficial no GitHub: https://github.com/StackExchange/StackExchange.Redis

Segue abaixo o código completo do nosso exemplo:

using StackExchange.Redis;
using System;

namespace StackExchangeRedisDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            //estabelecer a conexão com Redis
            using (ConnectionMultiplexer connectionRedis = ConnectionMultiplexer.Connect("localhost:13919,password=senhadoredis"))
            {
                //obter o database para envio de comandos ao Redis
                IDatabase clientRedis = connectionRedis.GetDatabase();
                //gravando uma chave
                clientRedis.StringSet("admin_sistema", "Desenvolvedor Ninja");
                //lendo uma chave
                Console.WriteLine(clientRedis.StringGet("admin_sistema"));
                //definindo 600 segundos como tempo de expiração
                clientRedis.KeyExpire("admin_sistema", TimeSpan.FromSeconds(600));
                //consultando o tempo de expiração da chave
                Console.WriteLine(clientRedis.KeyTimeToLive("admin_sistema"));
                //retirando o tempo de expiração da chave tornando-a permanente
                clientRedis.KeyPersist("admin_sistema");
                //apagando uma chave
                clientRedis.KeyDelete("admin_sistema");
                //fechando a conexão com o Redis
                connectionRedis.Close();
            }
        }
    }
}

Ou se preferir, o código completo está disponível no GitHub: https://github.com/desenvolvedorninja/stackexchange-redis-com-csharp

Quase 20 anos de experiência no mercado de TI.
Atuação em grandes empresas como Netshoes, Borland, JBS, Bradesco, Hospital das Clínicas, Rede, Prodam, HSPE, Instituto Ayrton Senna, e também em empresas internacionais como Delta Dental, T-Mobile, Pepsi e Mckesson.
Fundador da TecPrime Solutions, administrador da comunidade nopCommerce Brasil, e autor dos sites InvestFacil.net e Desenvolvedores.ninja

Facebooktwittergoogle_plusredditpinterestlinkedinmail

3 thoughts on “StackExchange.Redis – acessando Redis com C#

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *