Cliente Redis para C# (.NET): StackExchange.Redis

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Cliente Redis para C# (.NET): StackExchange.Redis



No desenvolvimento moderno na plataforma .NET, surge frequentemente a necessidade de cache rápido de dados, organização de filas de mensagens ou gerenciamento de sessões. Uma das melhores soluções para essas tarefas é o uso do Redis — um armazenamento de dados do tipo "chave-valor" de alto desempenho. Para interagir com o Redis a partir do C# (.NET), a biblioteca mais popular e confiável é o StackExchange.Redis.



O que é StackExchange.Redis?



StackExchange.Redis é uma biblioteca cliente de código aberto, desenvolvida pela empresa Stack Overflow. Ela fornece um conjunto completo de funções para trabalhar com Redis: desde operações simples GET/SET até cenários complexos com publicação/assinatura (Pub/Sub), transações e scripts Lua. A biblioteca é otimizada para aplicações multithread e suporta operações assíncronas, tornando-a a escolha ideal para serviços de alta carga em C#.



Instalação



Você pode instalar a biblioteca através do NuGet Package Manager. Execute o comando no console do gerenciador de pacotes:



Install-Package StackExchange.Redis


Ou através do .NET CLI:



dotnet add package StackExchange.Redis


Após a instalação, você pode conectar-se ao servidor Redis usando uma string de conexão:



using StackExchange.Redis;

ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost:6379");IDatabase db = redis.GetDatabase();


Principais recursos e exemplos de código



1. Operações básicas com chaves



O cenário mais comum é salvar e obter valores. Exemplo de trabalho com strings:



// Gravação de dadosdb.StringSet("user:1:name", "Alexey");db.StringSet("user:1:email", "alex@example.com");

// Leitura de dadosstring name = db.StringGet("user:1:name");string email = db.StringGet("user:1:email");

Console.WriteLine($"Nome: {name}, Email: {email}");


2. Trabalho com hashes



O Redis suporta a estrutura de dados "hash", que é conveniente para armazenar objetos:



// Gravação de hashHashEntry[] user = new HashEntry[]{    new HashEntry("name", "Maria"),    new HashEntry("age", 28),    new HashEntry("city", "Moscou")};db.HashSet("user:2", user);

// Leitura de todos os camposHashEntry[] loadedUser = db.HashGetAll("user:2");foreach (var entry in loadedUser){ Console.WriteLine($"{entry.Name}: {entry.Value}");}


3. Cache com tempo de vida



Uma das principais funções do Redis é a remoção automática de dados obsoletos. Defina um TTL (Time To Live) para a chave:



// Armazenamos dados em cache por 10 minutosdb.StringSet("cache:weather", "ensolarado, +22°C", TimeSpan.FromMinutes(10));

// Verificamos o tempo de vidaTimeSpan? ttl = db.KeyTimeToLive("cache:weather");Console.WriteLine($"Restante: {ttl?.TotalSeconds} segundos");


4. Publicação e assinatura (Pub/Sub)



Implemente troca de mensagens em tempo real. Exemplo de assinante:



// Criamos um assinanteISubscriber subscriber = redis.GetSubscriber();subscriber.Subscribe("notifications", (channel, message) =>{    Console.WriteLine($"Notificação recebida: {message}");});

// Publicamos uma mensagemsubscriber.Publish("notifications", "Olá, mundo!");


5. Transações



Execução de várias operações atomicamente:



ITransaction transaction = db.CreateTransaction();transaction.AddCondition(Condition.KeyNotExists("counter:lock"));transaction.StringSetAsync("counter:lock", "1");transaction.StringIncrementAsync("counter:value");

// Confirmamos a transaçãobool committed = transaction.Execute();Console.WriteLine(committed ? "Transação executada" : "Recusada");


Vantagens do StackExchange.Redis



  • Alto desempenho

Recommendations