StackExchange.Redis para C# (.NET): guía completa con ejemplos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

StackExchange.Redis para C# (.NET): guía completa con ejemplos

1. ¿Qué es y para qué sirve?

StackExchange.Redis es un cliente de alto rendimiento y asíncrono para Redis, desarrollado por el equipo de StackOverflow. Es la biblioteca estándar de facto para trabajar con Redis en el ecosistema .NET. Es compatible con .NET Framework 4.6+ y .NET Core/.NET 5+.

¿Para qué sirve? Redis es un almacén de datos en memoria que se usa comúnmente como caché, broker de mensajes (Pub/Sub), cola de tareas o base de datos NoSQL de alto rendimiento. StackExchange.Redis proporciona una API cómoda para todos estos escenarios: gestión de strings, hashes, listas, conjuntos, transacciones, scripts Lua, transmisión de datos, etc. Sin esta biblioteca, tendrías que escribir código de bajo nivel para manejar sockets y el protocolo de Redis (RESP).

La característica clave de la biblioteca es su asincronía y capacidad multihilo. Utiliza ConnectionMultiplexer, un objeto único y compartido para todas las conexiones al servidor Redis. Esto permite usar los sockets de manera eficiente y evita crear múltiples conexiones. La biblioteca es compatible con Redis Cluster, Sentinel y replicación.

2. Instalación

La instalación se realiza a través del Administrador de Paquetes NuGet. Ejecuta uno de los siguientes comandos en la consola del administrador de paquetes (Package Manager Console) o en la terminal de .NET CLI:

// Mediante .NET CLI
dotnet add package StackExchange.Redis

// Mediante Package Manager Console
Install-Package StackExchange.Redis

Después de la instalación, agrega la directiva using en tu código:

using StackExchange.Redis;

3. Inicio rápido — ejemplo mínimo funcional

A continuación se muestra un ejemplo mínimo que se conecta a un servidor Redis local, escribe un string y lo lee de vuelta:

using StackExchange.Redis;

// Creamos el multiplexor (punto de entrada para todas las operaciones)
// Reemplaza "localhost:6379" con la dirección de tu servidor Redis
ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost:6379");

// Obtenemos la base de datos (por defecto db 0)
IDatabase db = redis.GetDatabase();

// Escribimos un valor
bool setResult = db.StringSet("mikey", "¡Hola, Redis!");
Console.WriteLine($"Resultado del set: {setResult}");

// Leemos el valor
RedisValue value = db.StringGet("mikey");
Console.WriteLine($"Resultado del get: {value}");

// Cerramos la conexión (normalmente no es necesario si usas using)
redis.Close();

Importante: ConnectionMultiplexer es un objeto de larga duración. Debes crearlo una sola vez durante toda la vida de la aplicación (por ejemplo, como singleton en un contenedor DI). ¡No crees un nuevo multiplexor para cada solicitud!

4. Métodos/funciones/clases principales

4.1. ConnectionMultiplexer.Connect()

Firma: public static ConnectionMultiplexer Connect(string configuration)

Qué hace: Crea y devuelve una nueva instancia de ConnectionMultiplexer que gestiona todas las conexiones a Redis. Acepta una cadena de configuración (dirección, puerto, contraseña, tiempos de espera, etc.).

Ejemplo:

var redis = ConnectionMultiplexer.Connect("miservidorredis.com:6379,password=secreto,connectTimeout=5000");

4.2. IDatabase.StringSet()

Firma: bool StringSet(RedisKey key, RedisValue value, TimeSpan? expiry = null, When when = When.Always)

Qué hace: Establece el valor para una clave específica. Puede aceptar un tiempo de vida opcional (expiry) y una condición de establecimiento (solo si la clave existe, no existe, etc.).

Ejemplo:

IDatabase db = redis.GetDatabase();
db.S                    

Recommendations