StackExchange.Redis para C# (.NET): guia completo com exemplos práticos

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

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                    

Recommendations