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

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

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



En el desarrollo moderno en la plataforma .NET, a menudo surge la necesidad de un almacenamiento en caché rápido de datos, organización de colas de mensajes o gestión de sesiones. Una de las mejores soluciones para estas tareas es el uso de Redis, un almacén de datos de tipo "clave-valor" de alto rendimiento. Para interactuar con Redis desde C# (.NET), la biblioteca más popular y confiable es StackExchange.Redis.



¿Qué es StackExchange.Redis?



StackExchange.Redis es una biblioteca cliente de código abierto desarrollada por la empresa Stack Overflow. Proporciona un conjunto completo de funciones para trabajar con Redis: desde operaciones simples GET/SET hasta escenarios complejos con publicación/suscripción (Pub/Sub), transacciones y scripts Lua. La biblioteca está optimizada para aplicaciones multiproceso y admite operaciones asíncronas, lo que la convierte en una opción ideal para servicios de alta carga en C#.



Instalación



Puede instalar la biblioteca a través del Administrador de paquetes NuGet. Ejecute el comando en la consola del administrador de paquetes:



Install-Package StackExchange.Redis


O a través de .NET CLI:



dotnet add package StackExchange.Redis


Después de la instalación, puede conectarse al servidor Redis utilizando la cadena de conexión:



using StackExchange.Redis;

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


Funcionalidades principales y ejemplos de código



1. Operaciones básicas con claves



El escenario más común es guardar y obtener valores. Ejemplo de trabajo con cadenas:



// Escritura de datosdb.StringSet("user:1:name", "Alejandro");db.StringSet("user:1:email", "alex@example.com");

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

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


2. Trabajo con hashes



Redis admite la estructura de datos "hash", que es conveniente para almacenar objetos:



// Escritura de hashHashEntry[] user = new HashEntry[]{    new HashEntry("name", "María"),    new HashEntry("age", 28),    new HashEntry("city", "Madrid")};db.HashSet("user:2", user);

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


3. Almacenamiento en caché con tiempo de vida



Una de las funciones clave de Redis es la eliminación automática de datos obsoletos. Establezca un TTL (Time To Live) para la clave:



// Almacenamos en caché los datos por 10 minutosdb.StringSet("cache:weather", "soleado, +22°C", TimeSpan.FromMinutes(10));

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


4. Publicación y suscripción (Pub/Sub)



Implemente el intercambio de mensajes en tiempo real. Ejemplo de suscriptor:



// Creamos un suscriptorISubscriber subscriber = redis.GetSubscriber();subscriber.Subscribe("notifications", (channel, message) =>{    Console.WriteLine($"Notificación recibida: {message}");});

// Publicamos un mensajesubscriber.Publish("notifications", "¡Hola, mundo!");


5. Transacciones



Ejecución de múltiples operaciones de forma atómica:



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

// Confirmamos la transacciónbool committed = transaction.Execute();Console.WriteLine(committed ? "Transacción ejecutada" : "Rechazada");


Ventajas de StackExchange.Redis



  • Alto rendimiento

Recommendations