0Pricing
C# Academy · Lección

Abstracción IDistributedCache

Almacene datos en caché entre varios servidores.

Abstracción IDistributedCache es una lección gratuita de C# Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C# Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C# Academy incluye 4 lecciones en total.

¿Por qué usar una caché distribuida?

Una caché en memoria vive dentro de un único proceso, por lo que se pierde al reiniciar y no se comparte entre servidores. Una caché distribuida reside en un almacén externo (como Redis) que todas las instancias de su aplicación pueden leer y escribir, lo que hace que el almacenamiento en caché sea coherente en una implementación escalada horizontalmente.

La interfaz IDistributedCache

ASP.NET Core abstrae la caché distribuida mediante IDistributedCache en Microsoft.Extensions.Caching.Distributed. Su código depende de esta interfaz, no directamente de Redis, por lo que puede cambiar de implementación.

public interface IDistributedCache
{
    byte[] Get(string key);
    Task<byte[]> GetAsync(string key, CancellationToken token = default);
    void Set(string key, byte[] value, DistributedCacheEntryOptions options);
    void Remove(string key);
    void Refresh(string key);
}

Almacena bytes

Observe que la caché almacena byte[]. Para almacenar cadenas u objetos en la caché, primero debe serializarlos. Hay métodos de extensión prácticos para cadenas que cubren el caso más común.

using Microsoft.Extensions.Caching.Distributed;

await cache.SetStringAsync("greeting", "Hello, world");
string value = await cache.GetStringAsync("greeting");

Inyectar la caché

Solicite IDistributedCache mediante la inyección por constructor, como cualquier otro servicio.

public class WeatherService
{
    private readonly IDistributedCache _cache;
    public WeatherService(IDistributedCache cache)
    {
        _cache = cache;
    }
}

Leer de la caché

GetStringAsync devuelve null cuando la clave no existe o ha caducado. Gestione siempre el caso de fallo de caché.

string cached = await _cache.GetStringAsync("forecast:istanbul");
if (cached is null)
{
    // cache miss: load from source
}

Escribir en la caché

SetStringAsync almacena un valor con opciones de caducidad opcionales, que se explican en una lección posterior.

await _cache.SetStringAsync(
    "forecast:istanbul",
    "22C sunny",
    new DistributedCacheEntryOptions
    {
        AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(10)
    });

Eliminar y actualizar

RemoveAsync expulsa una clave de la caché, por ejemplo, cuando cambian los datos subyacentes. RefreshAsync restablece una caducidad deslizante sin cambiar el valor.

await _cache.RemoveAsync("forecast:istanbul");
await _cache.RefreshAsync("session:abc123");

La implementación en memoria

Para desarrollo o pruebas, registre la caché distribuida en memoria. Implementa la misma interfaz, por lo que su código es idéntico, pero los datos no se comparten realmente entre procesos.

builder.Services.AddDistributedMemoryCache();

Código independiente del proveedor

Como solo depende de IDistributedCache, cambiar del proveedor en memoria a Redis, o a SQL Server, requiere modificar una sola línea del registro y no implica cambios en el código de sus servicios.

Convenciones para nombrar claves

Utilice claves estructuradas y con espacio de nombres, como entity:id:field, por ejemplo user:42:profile. Unas convenciones claras evitan colisiones y hacen predecible la invalidación de la caché.

string key = $"user:{userId}:profile";

Cuándo no usar la caché

Almacene en la caché los datos que se leen con frecuencia y cambian pocas veces. Los datos muy volátiles o los datos confidenciales específicos de un usuario pueden no ser adecuados, y siempre debe sopesar el riesgo de servir datos obsoletos frente a las mejoras de rendimiento.

Comprobación rápida

Pruebe la abstracción IDistributedCache.

Resumen

IDistributedCache abstrae una caché externa y compartida para que todas las instancias de la aplicación vean los mismos datos. Almacena byte[], con GetStringAsync/SetStringAsync para cadenas, además de RemoveAsync y RefreshAsync. Depender de la interfaz mantiene el código independiente del proveedor y permite cambiar entre AddDistributedMemoryCache y Redis con una sola línea. Utilice claves claras con espacio de nombres.

Preguntas frecuentes

¿La lección «Abstracción IDistributedCache» es gratis?

Sí — el texto completo de «Abstracción IDistributedCache» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C# Academy, actualiza a CoddyKit PRO. El curso de C# Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Abstracción IDistributedCache»?

Almacene datos en caché entre varios servidores. Practicas C# Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar C# Academy?

No se requiere experiencia previa. C# Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.

¿Cuánto tiempo toma la lección «Abstracción IDistributedCache»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de C# Academy?

Sí. Cada lección de C# Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Abstracción IDistributedCache
  2. Conexión con Redis
  3. Patrones y expiración de caché
  4. Almacenamiento en caché de objetos serializados
← Volver a C# Academy