Compartir vía


Inicio rápido: Uso de Azure Cache for Redis con .NET Core

En este inicio rápido incorporará Azure Redis Cache en una aplicación .NET Core para acceder a una caché dedicada y segura, a la que se puede acceder desde cualquier aplicación de 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 GitHub

Clone el repositorio https://github.com/Azure-Samples/azure-cache-redis-samples/tree/main/quickstart/dotnet-core en GitHub.

Requisitos previos

Creación de una caché

  1. Para crear una caché, inicie sesión en Azure Portal. En el menú de Azure Portal, seleccione Crear un recurso.

    Captura de pantalla que muestra la opción Crear un recurso resaltada en el panel de navegación izquierdo de Azure Portal.

  2. 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, seleccione Crear.

    Captura de pantalla que muestra Azure Marketplace con Azure Cache for Redis en el cuadro de búsqueda y el botón Crear está resaltado.

  3. 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.
  4. Seleccione la pestaña Redes o Siguiente: Redes.

  5. En la pestaña Redes, seleccione un método de conectividad que se usará para la memoria caché.

  6. Seleccione la pestaña Opciones avanzadas o Siguiente: Opciones avanzadas.

  7. En el panel Opciones avanzadas, compruebe o seleccione un método de autenticación en función de la siguiente información:

    Captura de pantalla que muestra el panel Opciones avanzadas y las opciones disponibles que se van a seleccionar.

    • 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é.

  8. (Opcional) Seleccione la pestaña Etiquetas o Siguiente: Etiquetas.

  9. (Opcional) En la pestaña Etiquetas, escriba un nombre de etiqueta y un valor si desea clasificar el recurso de caché.

  10. Seleccione el botón Revisar y crear.

    En la pestaña Revisar y crear, Azure valida automáticamente la configuración.

  11. 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.

Habilitación de la autenticación de Microsoft Entra ID en la memoria caché

Si tiene una memoria caché, compruebe si se ha habilitado la autenticación de Microsoft Entra. Si no es así, habilítela. Se recomienda usar Microsoft Entra ID para las aplicaciones.

  1. En Azure Portal, seleccione la instancia de Azure Cache for Redis en la que desea usar la autenticación basada en tokens de Microsoft Entra.

  2. Seleccione Autenticación en el menú Recurso.

  3. Actualice el panel de trabajo para ver si está activada Habilitar la autenticación de Microsoft Entra. Si es así, puede continuar.

  4. Seleccione Habilitar autenticación de Microsoft Entra y escriba el nombre de un usuario válido. Al usuario que escriba se le asigna automáticamente una directiva de acceso del propietario de datos de forma predeterminada al seleccionar Guardar. También puede escribir una identidad administrada o una entidad de servicio para conectarse a la instancia de caché.

    Captura de pantalla que muestra la autenticación seleccionada en el menú de recursos y la habilitación de la autenticación de Microsoft Entra activada.

  5. Se muestra un cuadro de diálogo emergente en el que se le pregunta si desea actualizar la configuración e informa de que tarda varios minutos. Seleccione .

    Importante

    Una vez completada la operación de habilitación, los nodos de la instancia de caché se reinician para cargar la nueva configuración. Se recomienda realizar esta operación durante la ventana de mantenimiento o fuera del horario comercial pico. Esta operación puede tardar hasta 30 minutos.

Para obtener información sobre el uso de Microsoft Entra ID con la CLI de Azure, consulte las páginas de referencias para la identidad.

Anote el NOMBRE DE HOST. Usará estos valores más adelante para appsettings.json.

Adición de un secreto local para la cadena de conexión

En el archivo appsettings.json, agregue lo siguiente:

{
  "RedisHostName": "your_Azure_Redis_hostname"
}
  1. Reemplace "your_Azure_Redis_hostname" por el nombre de host y los números de puerto de Azure Redis. Por ejemplo: cache-name.region.redis.azure.net:10000 para Azure Managed Redis (versión preliminar) y cache-name.redis.cache.windows.net:6380 para los servicios de Azure Cache for Redis.

  2. Guarde el archivo.

Conectar a la caché con RedisConnection

En RedisConnection.cs, verá que el espacio de nombres StackExchange.Redis se ha agregado al código. Esto es necesario para la clase RedisConnection.

using StackExchange.Redis;

El código RedisConnection garantiza que siempre haya una conexión en buen estado a la memoria caché mediante la administración de la instancia ConnectionMultiplexer desde 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 un repositorio de GitHub.

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}");
    }

Los elementos en la memoria caché se pueden almacenar y recuperar mediante los métodos StringSetAsync y StringGetAsync.

En el ejemplo, puede ver que la clave Message está establecida en 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 Redis almacena la mayoría de los datos como cadenas, pero estas cadenas pueden contener muchos tipos de datos, como por ejemplo datos binarios serializados, que se pueden usar cuando se almacenan objetos .NET en 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, que tiene total flexibilidad a la hora de elegir el 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 se han abierto archivos, guárdelos y compile la aplicación con el siguiente comando:

dotnet build

Ejecute la aplicación con el siguiente comando para comprobar la serialización de objetos .NET:

dotnet run

Captura de pantalla de la aplicación de consola de cerda completada.

Limpieza de recursos

Si desea seguir usando los recursos que creó en este artículo, mantenga el grupo de recursos.

De lo contrario, si ya ha terminado con los recursos, puede eliminar el grupo de recursos de Azure que ha creado para evitar cargos.

Importante

La eliminación de un grupo de recursos es irreversible. Cuando elimine un grupo de recursos, todos los recursos contenidos en él 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 contiene recursos que desea conservar, puede eliminar cada recurso individualmente en lugar de eliminar el grupo de recursos.

Para eliminar un grupo de recursos

  1. Inicie sesión en Azure Portal y después seleccione Grupos de recursos.

  2. Seleccione el grupo de recursos que desea eliminar.

    Si hay muchos grupos de recursos, use el cuadro Filtro para cualquier campo... y escriba el nombre del grupo de recursos que creó para este artículo. Seleccione el grupo de recursos en la lista de resultados.

    Captura de pantalla que muestra una lista de grupos de recursos para eliminar en el panel de trabajo.

  3. Seleccione Eliminar grupo de recursos.

  4. Se le pedirá que confirme la eliminación del grupo de recursos. Escriba el nombre del grupo de recursos para confirmar y, después, seleccione Eliminar.

    Captura de pantalla que muestra un formulario que requiera el nombre del recurso para confirmar la eliminación.

Transcurridos unos instantes, el grupo de recursos y todos sus recursos se eliminan.

Pasos siguientes