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.
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
Que blog MARAVILHOSO. rsrs
Pena só ter conhecido aqui, ótimas dicas. Já está em meus favoritos.