® integración de almacenamiento en caché distribuido .NET AspireRedis*
incluye: integración de hospedaje de e integración de
Client
Obtenga información sobre cómo usar la integración de almacenamiento en caché distribuido .NET AspireRedis. La biblioteca Aspire.StackExchange.Redis.DistributedCaching
se utiliza para registrar un proveedor de IDistributedCache compatible con un servidor Redis usando la imagen de contenedor docker.io/library/redis
.
Obtenga información sobre cómo usar la integración de almacenamiento en caché distribuido .NET AspireRedis. La biblioteca Aspire.StackExchange.Redis.DistributedCaching
se utiliza para registrar un proveedor de IDistributedCache respaldado por un servidor de Garnet con la imagen de ghcr.io/microsoft/garnet
contenedor.
Obtenga información sobre cómo usar la integración de almacenamiento en caché distribuido .NET AspireRedis. La biblioteca
Integración de hospedaje
El modelo de integración de alojamiento de Redis representa un recurso Redis como el tipo RedisResource. Para acceder a estos tipos y a las API para expresarlos como recursos en el proyecto de host de la aplicación , agregue el paquete NuGet 📦Aspire.Hosting.Redis.
dotnet add package Aspire.Hosting.Redis
Para obtener más información, consulte dotnet add package o Administrar dependencias de paquetes en aplicaciones .NET.
Agregar Redis recurso
En el proyecto host de la aplicación, llame a AddRedis en la instancia de builder
para agregar un recurso de Redis:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddRedis("cache");
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
Cuando .NET.NET Aspire agrega una imagen de contenedor al host de la aplicación, como se muestra en el ejemplo anterior con la imagen de docker.io/Redis/Redis
, crea una nueva instancia de Redis en el equipo local. Se agrega una referencia al recurso de Redis (la variable cache
) al ExampleProject
.
El método WithReference configura una conexión en el ExampleProject
denominado "cache"
. Para obtener más información, consulte ciclo de vida de los recursos de contenedor.
Propina
Si prefiere conectarse a una instancia de Redis existente, llame a AddConnectionString en su lugar. Para obtener más información, vea Hacer referencia a los recursos existentes.
Incorporación de un recurso de Redis con Redis Insights
Para agregar Redis Insights al recurso Redis, llame al método WithRedisInsight
:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddRedis("cache")
.WithRedisInsight();
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
Redis Insights es una interfaz gráfica gratuita para analizar Redis datos en todos los sistemas operativos y implementaciones con la ayuda de nuestro asistente de inteligencia artificial, Redis Copilot.
.NET
.NET Aspire agrega otra imagen de contenedor docker.io/redis/redisinsight
al host de la aplicación que ejecuta la aplicación del comandante.
Nota
Para configurar el puerto de host para el RedisInsightResource
encadene una llamada a la API de WithHostPort
y proporcione el número de puerto deseado.
Añade el recurso Redis con Redis Commander
Para agregar el Redis Commander al recurso Redis, llame al método WithRedisCommander.
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddRedis("cache")
.WithRedisCommander();
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
Redis Commander es una aplicación web Node.js que se usa para ver, editar y administrar una base de datos Redis.
.NET
.NET Aspire agrega otra imagen de contenedor docker.io/rediscommander/redis-commander
al host de la aplicación que ejecuta la app Commander.
Propina
Para configurar el puerto de host para el RedisCommanderResource encadene una llamada a la API de WithHostPort y proporcione el número de puerto deseado.
Añadir el recurso Redis con volumen de datos
Para agregar un volumen de datos al recurso de Redis, llame al método WithDataVolume en el recurso Redis:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddRedis("cache")
.WithDataVolume(isReadOnly: false);
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
El volumen de datos se usa para preservar los datos de Redis fuera del ciclo de vida del contenedor. El volumen de datos se monta en la ruta /data
dentro del contenedor Redis y, si no se proporciona un parámetro name
, el nombre se genera de manera aleatoria. Para obtener más información sobre los volúmenes de datos y los detalles sobre por qué se prefieren a montajes bind, consulte los Docker documentos de Volúmenes.
Agregar el recurso Redis con montaje de enlace de datos
Para agregar un punto de montaje de datos en el recurso Redis, llame al método WithDataBindMount.
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddRedis("cache")
.WithDataBindMount(
source: @"C:\Redis\Data",
isReadOnly: false);
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
Importante
Los montajes de uniones de datos tienen una funcionalidad limitada en comparación con los volúmenes , que ofrecen un mejor rendimiento, portabilidad y seguridad, lo que los hace más adecuados para entornos de producción. Sin embargo, los montajes de vínculos permiten el acceso directo y la modificación de archivos en el sistema host, que son ideales para el desarrollo y las pruebas donde se necesitan cambios en tiempo real.
Los montajes de enlace de datos dependen del sistema de archivos de la máquina anfitriona para conservar los datos de Redis durante los reinicios del contenedor. El enlace de montaje de datos se encuentra en la ruta de acceso C:\Redis\Data
en Windows (o /Redis/Data
en Unix) en el equipo host dentro del contenedor Redis. Para obtener más información sobre los montajes vinculados de datos, consulte la documentación de Docker: montajes vinculados.
Agregar el recurso Redis con persistencia
Para agregar persistencia al recurso de Redis, llame al método WithPersistence con el volumen de datos o el punto de montaje de datos.
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddRedis("cache")
.WithDataVolume()
.WithPersistence(
interval: TimeSpan.FromMinutes(5),
keysChangedThreshold: 100);
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
El código anterior agrega persistencia al recurso Redis mediante la toma de instantáneas de los datos de Redis en un intervalo y umbral especificados. El interval
es el tiempo entre las exportaciones de instantáneas y el keysChangedThreshold
es el número de operaciones de cambio clave necesarias para desencadenar una instantánea. Para obtener más información sobre la persistencia, consulte los documentos Redis: Persistencia.
La integración de hospedaje de Garnet modela un recurso de Garnet como un tipo GarnetResource. Para acceder a este tipo y las API que le permiten agregarlo al paquete NuGet .Hosting.Garnet📦Aspire en el proyecto del host de la aplicación .
dotnet add package Aspire.Hosting.Garnet
Para obtener más información, consulte dotnet add package o Administrar dependencias de paquetes en aplicaciones .NET.
Adición de un recurso de Garnet
En el proyecto host de la aplicación, llame a AddGarnet en la instancia de builder
para agregar un recurso de Garnet:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddGarnet("cache");
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
Cuando .NET.NET Aspire agrega una imagen de contenedor al host de la aplicación, como se muestra en el ejemplo anterior con la imagen de ghcr.io/microsoft/garnet
, crea una nueva instancia de Garnet en el equipo local. Se agrega una referencia al recurso Garnet (la variable cache
) en el ExampleProject
.
El método WithReference configura una conexión en el ExampleProject
denominado "cache"
. Para obtener más información, consulte ciclo de vida de los recursos de contenedor.
Propina
Si prefiere conectarse a una instancia de Garnet existente, llame a AddConnectionString en su lugar. Para obtener más información, vea Hacer referencia a los recursos existentes.
Adición de un recurso de Garnet con volumen de datos
Para agregar un volumen de datos al recurso garnet, llame al método AddGarnet en el recurso garnet:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddGarnet("cache")
.WithDataVolume(isReadOnly: false);
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
El volumen de datos se usa para conservar los datos de Garnet fuera del ciclo de vida de su contenedor. El volumen de datos se monta en la ruta /data
en el contenedor de Garnet y, cuando no se proporciona un parámetro name
, el nombre se genera aleatoriamente. Para obtener más información sobre los volúmenes de datos y los detalles de por qué se prefieren a montajes enlazados, consulte la Docker documentación: Volúmenes.
Adición de un recurso Garnet con montaje enlazado de datos
Para agregar un punto de montaje de enlace de datos al recurso Garnet, llame al método WithDataBindMount:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddGarnet("cache")
.WithDataBindMount(
source: @"C:\Garnet\Data",
isReadOnly: false);
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
Importante
Los montajes de uniones de datos tienen una funcionalidad limitada en comparación con los volúmenes , que ofrecen un mejor rendimiento, portabilidad y seguridad, lo que los hace más adecuados para entornos de producción. Sin embargo, los montajes bind permiten el acceso directo y la modificación de archivos en el sistema host, lo cual es ideal para el desarrollo y las pruebas, donde se requieren realizar cambios en tiempo real.
Los montajes de enlace de datos dependen del sistema de archivos del equipo anfitrión para conservar los datos de Garnet entre reinicios del contenedor. El enlace de datos está montado en la ruta C:\Garnet\Data
en el equipo host de Windows (o en /Garnet/Data
en Unix) dentro del contenedor de Garnet. Para obtener más información sobre los bind mounts de datos, consulte la documentación: Docker bind mounts.
Adición de un recurso de Garnet con persistencia
Para agregar persistencia al recurso garnet, llame al método WithPersistence con el volumen de datos o el montaje de enlace de datos:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddGarnet("cache")
.WithDataVolume()
.WithPersistence(
interval: TimeSpan.FromMinutes(5),
keysChangedThreshold: 100);
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
El código anterior agrega persistencia al recurso de Redis tomando instantáneas de los datos de garnet en un intervalo y umbral especificados. El interval
es el tiempo entre las exportaciones de instantáneas y el keysChangedThreshold
es el número de operaciones de cambio clave necesarias para desencadenar una instantánea. Para obtener más información sobre la persistencia, consulte los documentos Redis: Persistencia.
La integración de alojamiento de Valkey modela un recurso de Valkey como tipo ValkeyResource. Para acceder a este tipo y a las API que le permiten agregarlo al paquete NuGet
dotnet add package Aspire.Hosting.Valkey
Para obtener más información, consulte dotnet add package o Administrar dependencias de paquetes en aplicaciones .NET.
Adición de un recurso Valkey
En el proyecto host de la aplicación, llame a AddValkey en la instancia de builder
para agregar un recurso Valkey:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddValkey("cache");
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
Cuando .NET.NET Aspire agrega una imagen de contenedor al host de la aplicación, como se muestra en el ejemplo anterior con la imagen de docker.io/valkey/valkey
, crea una nueva instancia de Valkey en el equipo local. Se agrega una referencia al recurso Valkey (la variable cache
) al ExampleProject
.
El método WithReference configura una conexión en el ExampleProject
denominado "cache"
. Para obtener más información, consulte ciclo de vida de los recursos de contenedor.
Propina
Si prefiere conectarse a una instancia de Valkey existente, llame a AddConnectionString en su lugar. Para obtener más información, vea Hacer referencia a los recursos existentes.
Adición de un recurso Valkey con volumen de datos
Para agregar un volumen de datos al recurso Valkey, llame al método AddValkey en el recurso Valkey:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddValkey("cache")
.WithDataVolume(isReadOnly: false);
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
El volumen de datos se usa para conservar los datos de Valkey fuera del ciclo de vida de su contenedor. El volumen de datos se monta en la ruta de acceso /data
del contenedor Valkey y, cuando no se proporciona un parámetro name
, el nombre se genera de forma aleatoria. Para obtener más información sobre los volúmenes de datos y los detalles sobre por qué se prefieren a los
Añadir recurso Valkey con montaje vinculado de datos
Para agregar un montaje de enlace de datos al recurso Valkey, llame al método WithDataBindMount:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddValkey("cache")
.WithDataBindMount(
source: @"C:\Valkey\Data",
isReadOnly: false);
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
Importante
Los montajes de uniones de datos tienen una funcionalidad limitada en comparación con los volúmenes , que ofrecen un mejor rendimiento, portabilidad y seguridad, lo que los hace más adecuados para entornos de producción. Sin embargo, los "bind mounts" permiten el acceso directo y la modificación de archivos en el sistema host, lo cual es ideal para el desarrollo y las pruebas donde se necesitan realizar cambios en tiempo real.
Los montajes de datos vinculados dependen del sistema de archivos del host para conservar los datos de Valkey durante los reinicios del contenedor. El montaje de enlace de datos está montado en C:\Valkey\Data
en Windows (o en /Valkey/Data
en Unix) en la ruta de acceso de la máquina host en el contenedor Valkey. Para obtener más información sobre los montajes vinculados de datos, consulte la documentación de Docker: montajes vinculados.
Agrega un recurso Valkey con persistencia
Para agregar persistencia al recurso Valkey, llame al método WithPersistence con el volumen de datos o el montaje de enlace de datos:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddValkey("cache")
.WithDataVolume()
.WithPersistence(
interval: TimeSpan.FromMinutes(5),
keysChangedThreshold: 100);
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
El código anterior agrega persistencia al recurso de Redis tomando instantáneas de los datos de Valkey en un intervalo y umbral especificados. El interval
es el tiempo entre las exportaciones de instantáneas y el keysChangedThreshold
es el número de operaciones de cambio clave necesarias para desencadenar una instantánea. Para obtener más información sobre la persistencia, consulte los documentos Redis: Persistencia.
Comprobaciones de estado de integración del hospedaje
La integración de alojamiento Redis agrega automáticamente una verificación de estado para el tipo de recurso adecuado. La comprobación de estado comprueba que el servidor se está ejecutando y que se puede establecer una conexión a él.
La integración de hospedaje se basa en el 📦 AspNetCore.HealthChecks.Redis paquete NuGet.
integración Client
Para empezar a trabajar con la integración de almacenamiento en caché distribuido de .NET AspireRedis, instale el paquete NuGet 📦Aspire.StackExchange.Redis.DistributedCaching en el proyecto que utiliza el cliente, es decir, el proyecto de la aplicación que emplea el cliente de almacenamiento en caché distribuido Redis. La integración de cliente de Redis registra una instancia de IDistributedCache que puede usar para interactuar con Redis.
dotnet add package Aspire.StackExchange.Redis.DistributedCaching
Agregar cliente Redis
En el archivo Program.cs del proyecto que consume el cliente, llame a la extensión AddRedisDistributedCache para registrar los servicios necesarios para el almacenamiento en caché distribuido y agregue un IDistributedCache para su uso a través del contenedor de inserción de dependencias.
builder.AddRedisDistributedCache(connectionName: "cache");
Consejo (assuming the context refers to advice)
El parámetro connectionName
debe coincidir con el nombre usado al agregar el recurso Redis en el proyecto host de la aplicación. Para obtener más información, consulte Agregar Redis recurso.
Propina
El parámetro connectionName
debe coincidir con el nombre usado al agregar el recurso garnet en el proyecto host de la aplicación. Para obtener más información, consulte Agregar recurso de Garnet.
Propina
El parámetro connectionName
debe coincidir con el nombre usado al agregar el recurso Valkey en el proyecto host de la aplicación. Para obtener más información, consulte Agregar recurso Valkey.
A continuación, puedes recuperar la instancia de IDistributedCache
mediante la inyección de dependencias. Por ejemplo, para recuperar la memoria caché de un servicio:
public class ExampleService(IDistributedCache cache)
{
// Use cache...
}
Para obtener más información sobre la inserción de dependencias, consulte .NET inserción de dependencias.
Adición de un cliente de Redis con clave
Puede haber situaciones en las que quiera registrar varias instancias de IDistributedCache
con nombres de conexión diferentes. Para registrar clientes de Redis con clave, llame al método AddKeyedRedisDistributedCache:
builder.AddKeyedRedisDistributedCache(name: "chat");
builder.AddKeyedRedisDistributedCache(name: "product");
A continuación, puede recuperar las instancias de IDistributedCache
mediante la inyección de dependencias. Por ejemplo, para recuperar la conexión de un servicio de ejemplo:
public class ExampleService(
[FromKeyedServices("chat")] IDistributedCache chatCache,
[FromKeyedServices("product")] IDistributedCache productCache)
{
// Use caches...
}
Para obtener más información sobre los servicios clave, consulte .NET inserción de dependencias: servicios clave.
Configuración
La .NET AspireRedis integración de almacenamiento en caché distribuido proporciona varias opciones para configurar la conexión de Redis en función de los requisitos y convenciones del proyecto.
Uso de una cadena de conexión
Al usar una cadena de conexión de la sección de configuración de ConnectionStrings
, puede proporcionar el nombre de la cadena de conexión al llamar a builder.AddRedisDistributedCache
:
builder.AddRedisDistributedCache("cache");
Después, se recuperará la cadena de conexión de la sección de configuración ConnectionStrings
.
{
"ConnectionStrings": {
"cache": "localhost:6379"
}
}
Para obtener más información sobre cómo dar formato a esta cadena de conexión, consulte los documentos de configuración de Redis de Stack Exchange.
Uso de proveedores de configuración
La integración de almacenamiento en caché distribuido de .NET Aspire Stack Exchange Redis admite Microsoft.Extensions.Configuration. Carga el StackExchangeRedisSettings desde la configuración utilizando la clave Aspire:StackExchange:Redis
. Ejemplo appsettings.json que configura algunas de las opciones:
{
"Aspire": {
"StackExchange": {
"Redis": {
"ConfigurationOptions": {
"ConnectTimeout": 3000,
"ConnectRetry": 2
},
"DisableHealthChecks": true,
"DisableTracing": false
}
}
}
}
Para obtener el esquema completo de integración del cliente de almacenamiento en caché distribuido RedisJSON, consulte Aspire.StackExchange.Redis.DistributedCaching/ConfigurationSchema.json.
Usa delegados en línea
También puede utilizar el delegado de Action<StackExchangeRedisSettings>
para configurar algunas o todas las opciones directamente, por ejemplo, para configurar DisableTracing
:
builder.AddRedisDistributedCache(
"cache",
settings => settings.DisableTracing = true);
También puede configurar ConfigurationOptions usando el parámetro delegado Action<ConfigurationOptions> configureOptions
del método AddRedisDistributedCache
. Por ejemplo, para establecer el tiempo de espera de conexión:
builder.AddRedisDistributedCache(
"cache",
static settings => settings.ConnectTimeout = 3_000);
Client comprobaciones de salud de integración
De forma predeterminada, las integraciones de cliente .NET.NET Aspire tienen las comprobaciones de estado habilitadas para todos los servicios. Del mismo modo, muchas .NET.NET Aspireintegraciones de hospedaje también habilitan los puntos de conexión de verificación de estado. Para obtener más información, consulte:
La .NET AspireRedis integración de almacenamiento en caché distribuido controla lo siguiente:
- Agrega la comprobación de estado cuando StackExchangeRedisSettings.DisableHealthChecks es
false
, que intenta conectarse a la instancia del contenedor. - Se integra con el endpoint HTTP de
/health
, el cual especifica que todas las comprobaciones de estado registradas deben superarse para que la aplicación se considere lista para aceptar tráfico.
Observabilidad y telemetría
.NET .NET Aspire las integraciones configuran automáticamente los registros, el seguimiento y las métricas, que a veces se denominan los pilares de la observabilidad. Para obtener más información sobre la observabilidad de integración y la telemetría, consulte información general sobre las integraciones de .NET.NET Aspire. En función del servicio de respaldo, algunas integraciones solo pueden admitir algunas de estas características. Por ejemplo, algunas integraciones admiten el registro y el seguimiento, pero no las métricas. Las características de telemetría también se pueden deshabilitar mediante las técnicas presentadas en la sección de configuración .
Registro
La integración de almacenamiento en caché distribuido .NET AspireRedis usa las siguientes categorías de registro:
Aspire.StackExchange.Redis
Microsoft.Extensions.Caching.StackExchangeRedis
Rastreo
La integración del almacenamiento en caché distribuido .NET AspireRedis emitirá las siguientes actividades de seguimiento mediante OpenTelemetry:
OpenTelemetry.Instrumentation.StackExchangeRedis
Métricas
Actualmente, la integración de almacenamiento en caché distribuido .NET AspireRedis no admite métricas de forma predeterminada debido a limitaciones con la biblioteca de StackExchange.Redis
.
Consulte también
*: Redis es una marca registrada de Redis Ltd. Cualquier derecho sobre los mismos está reservado a Redis Ltd. Cualquier uso por parte de Microsoft es solo con fines referenciales y no indica ningún patrocinio, aprobación o afiliación entre Redis y Microsoft. Volver al principio?