Inicio rápido: Uso de Azure Redis Cache con una aplicación .NET Core
En este inicio rápido, incorporará Azure Cache for Redis en una aplicación .NET Core para obtener acceso a una caché segura y dedicada a la que se puede acceder desde cualquier aplicación en Azure. Concretamente, usará el cliente StackExchange.Redis con código C# en una aplicación de consola de .NET Core.
Ir al código
En este artículo se describe cómo modificar el código de una aplicación de ejemplo para crear una aplicación de trabajo que se conecte a Azure Cache for Redis.
Si desea ir directamente al código de ejemplo, consulte el ejemplo de inicio rápido de .NET Core en GitHub.
Requisitos previos
- Suscripción a Azure. Crear una cuenta gratuita
- SDK de .NET Core
Creación de una caché
Para crear una caché, inicie sesión en Azure Portal. En el menú de Azure Portal, seleccione Crear un recurso.
En el panel Comenzar, escriba Azure Cache for Redis en la barra de búsqueda. En los resultados de la búsqueda, encuentre Azure Cache for Redis y a continuación, seleccioneCrear.
En el panel Nueva Redis Cache, en la pestaña Aspectos básicos, configure las siguientes opciones para la memoria caché:
Configuración Acción Descripción Suscripción Seleccione la suscripción a Azure. La suscripción que se va a usar para crear la nueva instancia de Azure Cache for Redis. Grupo de recursos Seleccione un grupo de recursos o Crear nuevo, y escriba un nombre nuevo para el grupo de recursos. Nombre del grupo de recursos en el que se va a crear la memoria caché y otros recursos. Al colocar todos los recursos de la aplicación en un grupo de recursos, puede administrarlos o eliminarlos fácilmente. Nombre DNS Escriba un nombre único. El nombre de caché debe ser una cadena de 1 a 63 caracteres que contenga solo números, letras y guiones. El nombre debe comenzar y terminar por un número o una letra y no puede contener guiones consecutivos. El nombre de host de la instancia de caché es \<DNS name>.redis.cache.windows.net
.Ubicación Seleccione una ubicación. Una región de Azure cercana a otros servicios que usan la memoria caché. SKU de la caché Seleccione una SKU. La SKU determina los parámetros de tamaño, rendimiento y característica que están disponibles para la memoria caché. Para más información, consulte la introducción a Azure Cache for Redis. Tamaño de la caché Seleccione un tamaño de caché. Para más información, consulte la introducción a Azure Cache for Redis. Seleccione la pestaña Redes o Siguiente: Redes.
En la pestaña Redes, seleccione un método de conectividad que se usará para la memoria caché.
Seleccione la pestaña Opciones avanzadas o Siguiente: Opciones avanzadas.
En el panel Opciones Avanzadas, compruebe o seleccione un método de autenticación en función de la siguiente información:
- De manera predeterminada, para una nueva caché Básica, Estándar o Premium, la Autenticación de Microsoft Entra está habilitada y la Autenticación de claves de acceso está deshabilitada.
- Para las cachés Básica o Estándar, puede elegir la selección de un puerto que no sea TLS.
- Para las cachés Estándar y Premium, puede habilitar las zonas de disponibilidad. No puede deshabilitar las zonas de disponibilidad una vez creada la caché.
- En el caso de una caché Premium, configure las opciones para un puerto que no sea TLS, la agrupación en clústeres, la identidad administrada y la persistencia de datos.
Importante
Para obtener una seguridad óptima, se recomienda usar Microsoft Entra ID con identidades administradas para autorizar solicitudes en la memoria caché, si es posible. La autorización mediante Microsoft Entra ID y las identidades administradas proporciona una seguridad y facilidad de uso superiores a la autorización mediante claves de acceso compartidas. Para más información sobre el uso de identidades administradas con la memoria caché, consulte Uso de Microsoft Entra ID para la autenticación de caché.
(Opcional) Seleccione la pestaña Etiquetas o Siguiente: Etiquetas.
(Opcional) En la pestaña Etiquetas, escriba un nombre de etiqueta y un valor si desea clasificar el recurso de caché.
Seleccione el botón Revisar y crear.
En la pestaña Revisar y crear, Azure valida automáticamente la configuración.
Tras aparecer el mensaje verde Validación superada, seleccione Crear.
Se produce una nueva implementación de caché durante varios minutos. Puede supervisar el progreso de la implementación en el panel Información general de Azure Cache for Redis. Cuando Estado muestra En ejecución, la memoria caché está lista para usarse.
Obtención del nombre de host, los puertos y la clave de acceso
Para conectarse al servidor de Azure Cache for Redis, el cliente de la caché necesita el nombre de host, los puertos y una clave de acceso de la caché. Es posible que algunos clientes utilicen nombres ligeramente diferentes para estos elementos. Puede obtener el nombre de host, los puertos y las claves en Azure Portal.
Para obtener una clave de acceso para la memoria caché:
- En Azure Portal, acceda a la caché.
- En el menú Servicio, en Configuración, seleccione Autenticación.
- En el panel Autenticación, seleccione la pestaña Claves de acceso.
- Para copiar el valor de una clave de acceso, seleccione el icono Copiar en el campo de clave.
Para obtener el nombre de host y los puertos de la memoria caché:
- En Azure Portal, acceda a la caché.
- En el menú Servicio, seleccione Información general.
- En Información esencial, para Nombre de host, seleccione el icono Copiar para copiar el valor del nombre de host. El valor del nombre de host tiene el formato
<DNS name>.redis.cache.windows.net
. - En Puertos, seleccione el icono Copiar para copiar los valores de puerto.
Tome nota de los valores de NOMBRE DE HOST y de la clave de acceso principal. Usará estos valores más adelante para construir el secreto CacheConnection
.
Adición de un secreto local para la cadena de conexión
En la ventana del símbolo del sistema, ejecute el siguiente comando para almacenar un nuevo secreto denominado CacheConnection
. Reemplace los marcadores de posición (incluidos los corchetes angulares), por el nombre de la caché (<cache name>
) y la clave de acceso principal (<primary-access-key>
):
dotnet user-secrets set CacheConnection "<cache name>.redis.cache.windows.net,abortConnect=false,ssl=true,allowAdmin=true,password=<primary-access-key>"
Conexión a la caché con RedisConnection
La clase RedisConnection
administra la conexión a la caché. En primer lugar, realice la conexión en esta instrucción en Program.cs:
_redisConnection = await RedisConnection.InitializeAsync(connectionString: configuration["CacheConnection"].ToString());
En RedisConnection.cs, el espacio de nombres StackExchange.Redis se agrega al código. El espacio de nombres es necesario para la clase RedisConnection
.
using StackExchange.Redis;
La clase RedisConnection
garantiza que siempre haya una conexión correcta a la memoria caché. La conexión se administra mediante la instancia de ConnectionMultiplexer
de StackExchange.Redis. La clase RedisConnection
vuelve a crear la conexión cuando se pierde una conexión y no se puede volver a conectar automáticamente.
Para obtener más información, consulte StackExchange.Redis y el código en el repositorio de GitHub StackExchange.Redis.
Ejecución de comandos de caché
En Program.cs, puede ver el código siguiente para el método RunRedisCommandsAsync
en la clase Program
para la aplicación de consola:
private static async Task RunRedisCommandsAsync(string prefix)
{
// Simple PING command
Console.WriteLine($"{Environment.NewLine}{prefix}: Cache command: PING");
RedisResult pingResult = await _redisConnection.BasicRetryAsync(async (db) => await db.ExecuteAsync("PING"));
Console.WriteLine($"{prefix}: Cache response: {pingResult}");
// Simple get and put of integral data types into the cache
string key = "Message";
string value = "Hello! The cache is working from a .NET console app!";
Console.WriteLine($"{Environment.NewLine}{prefix}: Cache command: GET {key} via StringGetAsync()");
RedisValue getMessageResult = await _redisConnection.BasicRetryAsync(async (db) => await db.StringGetAsync(key));
Console.WriteLine($"{prefix}: Cache response: {getMessageResult}");
Console.WriteLine($"{Environment.NewLine}{prefix}: Cache command: SET {key} \"{value}\" via StringSetAsync()");
bool stringSetResult = await _redisConnection.BasicRetryAsync(async (db) => await db.StringSetAsync(key, value));
Console.WriteLine($"{prefix}: Cache response: {stringSetResult}");
Console.WriteLine($"{Environment.NewLine}{prefix}: Cache command: GET {key} via StringGetAsync()");
getMessageResult = await _redisConnection.BasicRetryAsync(async (db) => await db.StringGetAsync(key));
Console.WriteLine($"{prefix}: Cache response: {getMessageResult}");
// Store serialized object to cache
Employee e007 = new Employee("007", "Davide Columbo", 100);
stringSetResult = await _redisConnection.BasicRetryAsync(async (db) => await db.StringSetAsync("e007", JsonSerializer.Serialize(e007)));
Console.WriteLine($"{Environment.NewLine}{prefix}: Cache response from storing serialized Employee object: {stringSetResult}");
// Retrieve serialized object from cache
getMessageResult = await _redisConnection.BasicRetryAsync(async (db) => await db.StringGetAsync("e007"));
Employee e007FromCache = JsonSerializer.Deserialize<Employee>(getMessageResult);
Console.WriteLine($"{prefix}: Deserialized Employee .NET object:{Environment.NewLine}");
Console.WriteLine($"{prefix}: Employee.Name : {e007FromCache.Name}");
Console.WriteLine($"{prefix}: Employee.Id : {e007FromCache.Id}");
Console.WriteLine($"{prefix}: Employee.Age : {e007FromCache.Age}{Environment.NewLine}");
}
Puede almacenar y recuperar elementos de caché mediante los métodos StringSetAsync
y StringGetAsync
.
En el ejemplo, puede ver que la clave Message
está establecida en un valor. La aplicación actualizó ese valor almacenado en caché. La aplicación también ejecutó el comando PING
.
Trabajar con objetos .NET en la memoria caché
El servidor de Redis almacena la mayoría de los datos en formato de cadena. Las cadenas pueden contener muchos tipos de datos, incluidos los datos binarios serializados. Puede usar datos binarios serializados al almacenar objetos .NET en la memoria caché.
Azure Redis Cache puede almacenar en caché objetos .NET así como tipos de datos primitivos, pero antes de poder almacenar en caché un objeto .NET, se debe serializar.
La serialización del objeto .NET es responsabilidad del desarrollador de la aplicación. La serialización del objeto da al desarrollador flexibilidad en su elección del serializador.
La siguiente clase Employee
se definió en Program.cs para que el ejemplo también pudiera mostrar cómo obtener y establecer un objeto serializado:
class Employee
{
public string Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public Employee(string id, string name, int age)
{
Id = id;
Name = name;
Age = age;
}
}
Ejecución del ejemplo
Si abrió algún archivo, guarde los archivos. A continuación, compile la aplicación mediante el comando siguiente:
dotnet build
Para probar la serialización de objetos .NET, ejecute este comando:
dotnet run
Limpieza de recursos
Si desea seguir usando los recursos que creó en este artículo, mantenga el grupo de recursos.
De lo contrario, para evitar cargos relacionados con los recursos, si ha terminado de usarlos, puede eliminar el grupo de recursos de Azure que creó.
Advertencia
La eliminación de un grupo de recursos es irreversible. Cuando elimine un grupo de recursos, todos los recursos del grupo se eliminan permanentemente. Asegúrese de no eliminar por accidente el grupo de recursos o los recursos equivocados. Si ha creado los recursos en un grupo de recursos existente que tiene recursos que desea conservar, puede eliminar cada recurso individualmente en lugar de eliminar el grupo de recursos.
Eliminación de un grupo de recursos
Inicie sesión en Azure Portal y después seleccione Grupos de recursos.
Seleccione el grupo de recursos que se eliminará.
Si hay muchos grupos de recursos, en Filtro para cualquier campo, escriba el nombre del grupo de recursos que creó para completar este artículo. En la lista de resultados de búsqueda, seleccione el grupo de recursos.
Seleccione Eliminar grupo de recursos.
En el panel Eliminar un grupo de recursos, escriba el nombre del grupo de recursos para confirmar y, a continuación, seleccione Eliminar.
En unos instantes, el grupo de recursos y todos sus recursos se eliminan.