StackExchange.Redis para C# (.NET): guia completo com exemplos práticos
1. O que é e para que serve
StackExchange.Redis é um cliente Redis de alto desempenho e assíncrono, desenvolvido pela equipe do StackOverflow. É a biblioteca padrão de facto para trabalhar com Redis no ecossistema .NET. Ela é compatível com .NET Framework 4.6+ e .NET Core/.NET 5+.
Para que serve? Redis é um armazenamento de dados em memória, frequentemente usado como cache, broker de mensagens (Pub/Sub), fila de tarefas ou banco de dados NoSQL de alta performance. O StackExchange.Redis oferece uma API prática para todos esses cenários: gerenciamento de strings, hashes, listas, conjuntos, transações, scripts Lua, streaming de dados e muito mais. Sem essa biblioteca, você precisaria escrever código de baixo nível para lidar com sockets e o protocolo Redis (RESP).
A principal característica da biblioteca é sua assincronicidade e suporte a multithreading. Ela utiliza o ConnectionMultiplexer — um objeto único e compartilhado para todas as conexões com o servidor Redis. Isso permite usar sockets de forma eficiente e evitar a criação de múltiplas conexões. A biblioteca oferece suporte completo a Redis Cluster, Sentinel e replicação.
2. Instalação
A instalação é feita através do NuGet Package Manager. Execute um dos seguintes comandos no console do gerenciador de pacotes (Package Manager Console) ou no terminal .NET CLI:
// Via .NET CLI
dotnet add package StackExchange.Redis
// Via Package Manager Console
Install-Package StackExchange.Redis
Após a instalação, adicione a diretiva using no seu código:
using StackExchange.Redis;
3. Início rápido — exemplo mínimo funcional
Abaixo está um exemplo mínimo que se conecta a um servidor Redis local, grava uma string e a lê de volta:
using StackExchange.Redis;
// Cria o multiplexador (ponto de entrada para todas as operações)
// Substitua "localhost:6379" pelo endereço do seu servidor Redis
ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost:6379");
// Obtém o banco de dados (por padrão, db 0)
IDatabase db = redis.GetDatabase();
// Grava um valor
bool setResult = db.StringSet("minhachave", "Olá, Redis!");
Console.WriteLine($"Resultado do set: {setResult}");
// Lê o valor
RedisValue value = db.StringGet("minhachave");
Console.WriteLine($"Resultado do get: {value}");
// Fecha a conexão (geralmente não é necessário se usar using)
redis.Close();
Importante: O ConnectionMultiplexer é um objeto de longa duração. Ele deve ser criado uma única vez durante toda a vida útil da aplicação (por exemplo, como singleton no contêiner DI). Não crie um novo multiplexador para cada requisição!
4. Principais métodos/funções/classes
4.1. ConnectionMultiplexer.Connect()
Assinatura: public static ConnectionMultiplexer Connect(string configuration)
O que faz: Cria e retorna uma nova instância de ConnectionMultiplexer, que gerencia todas as conexões com o Redis. Aceita uma string de configuração (endereço, porta, senha, timeouts, etc.).
Exemplo:
var redis = ConnectionMultiplexer.Connect("meuservidorredis.com:6379,password=secreta,connectTimeout=5000");
4.2. IDatabase.StringSet()
Assinatura: bool StringSet(RedisKey key, RedisValue value, TimeSpan? expiry = null, When when = When.Always)
O que faz: Define o valor para uma chave específica. Pode aceitar um tempo de vida opcional (expiry) e uma condição de definição (apenas se a chave existir, não existir, etc.).
Exemplo:
IDatabase db = redis.GetDatabase();
db.S Também na biblioteca
Validação de dados em Swift (iOS/macOS): bibliotecas e abordagens
Autorização e Autenticação em Swift: guia completo para iOS/macOS
Parsing de HTML em C# (.NET): bibliotecas HtmlAgilityPack e AngleSharp
Filas de Tarefas em Kotlin: Coroutines, KJob e Padrões Avançados
tRPC para TypeScript: guia completo com exemplos