Comparteix a través de


Inicio rápido: Uso de Azure Cache for Redis con una aplicación de Node.js

En este inicio rápido, incorporará Azure Cache for Redis en una aplicación Node.js para obtener acceso a una caché segura y dedicada a la que se puede acceder desde cualquier aplicación en Azure.

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, seleccioneCrear.

    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.

Instalación de la biblioteca cliente de node-redis

La biblioteca de node-redis es el principal cliente de Node.js para Redis. Puede instalar el cliente mediante npm y el siguiente comando:

npm install redis

Creación de una aplicación de Node.js para acceder a una memoria caché

Cree una aplicación de Node.js que use Microsoft Entra ID o claves de acceso para conectarse a Azure Cache for Redis. Se recomienda usar Microsoft Entra ID.

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

Para una caché existente, compruebe primero si la autenticación de Microsoft Entra está habilitada. Si no es así, complete los pasos siguientes para habilitar la autenticación de Microsoft Entra. Se recomienda usar Microsoft Entra ID para la autenticación de 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. En el menú Servicio, en Configuración, seleccione Autenticación.

  3. En el panel Autenticación, compruebe si la casilla Habilitar autenticación de Microsoft Entra está activada. Si es así, puede pasar a la sección siguiente.

  4. De lo contrario, active la casillaHabilitar autenticación de Microsoft Entra. A continuación, escriba el nombre de un usuario válido. Seleccione Guardar. El nombre de usuario que escriba se asigna automáticamente a la directiva de acceso del propietario de datos.

    También puede escribir una identidad administrada o una entidad de servicio para conectarse a la memoria caché.

    Captura de pantalla que muestra la opción Autenticación seleccionada en el menú Servicio y la casilla Habilitar autenticación Microsoft Entra activada.

  5. En un cuadro de diálogo, se le pregunta si desea actualizar la configuración y se le informa de que la actualización tarda varios minutos en finalizar. Seleccione .

    Importante

    Cuando finaliza la operación de habilitación, los nodos de la caché se reinician para cargar la nueva configuración. Se recomienda completar esta operación durante la ventana de mantenimiento estándar o fuera de las horas punta del horario comercial. El proceso puede tardar hasta 30 minutos.

Para más información sobre el uso de Microsoft Entra ID con la CLI de Azure, consulte las páginas de referencia de identidad.

Instalación de la biblioteca cliente de Identidad de Azure para JavaScript

La biblioteca cliente de Identidad de Azure para JavaScript usa la Biblioteca de autenticación de Microsoft (MSAL) necesaria para proporcionar compatibilidad con la autenticación de tokens. Instale la biblioteca mediante npm:

npm install @azure/identity

Creación de una aplicación de Node.js mediante Microsoft Entra ID

  1. Agregue variables de entorno para el nombre de host y el identificador de entidad de servicio.

    El ID de la entidad de servicio es el ID del objeto de su entidad de servicio o usuario de Microsoft Entra ID. En Azure Portal, este valor aparece como Nombre de usuario.

    set AZURE_CACHE_FOR_REDIS_HOST_NAME=contosoCache
    set REDIS_SERVICE_PRINCIPAL_ID=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    
  2. Cree un archivo de script denominado redistest.js.

  3. Agregue el siguiente ejemplo de JavaScript en el archivo. Este código muestra cómo conectarse a una instancia de Azure Cache for Redis mediante el nombre de host de caché y las variables de entorno clave. El código también almacena y recupera un valor de cadena en la memoria caché. También se ejecutan los comandos PING y CLIENT LIST. Para más ejemplos de uso de Redis con el cliente node-redis, consulte Node-Redis.

    const { createClient } = require("redis");
    const { DefaultAzureCredential } = require("@azure/identity");
    
    async function main() {
      // Construct a Token Credential from Identity library, e.g. ClientSecretCredential / ClientCertificateCredential / ManagedIdentityCredential, etc.
      const credential = new DefaultAzureCredential();
      const redisScope = "https://redis.azure.com/.default";
    
      // Fetch a Microsoft Entra token to be used for authentication. This token will be used as the password.
      let accessToken = await credential.getToken(redisScope);
      console.log("access Token", accessToken);
    
      // Create redis client and connect to the Azure Cache for Redis over the TLS port using the access token as password.
      const cacheConnection = createClient({
        username: process.env.REDIS_SERVICE_PRINCIPAL_ID,
        password: accessToken.token,
        url: `redis://${process.env.AZURE_CACHE_FOR_REDIS_HOST_NAME}:6380`,
        pingInterval: 100000,
        socket: { 
          tls: true,
          keepAlive: 0 
        },
      });
    
      cacheConnection.on("error", (err) => console.log("Redis Client Error", err));
      await cacheConnection.connect();
    
      // PING command
      console.log("\nCache command: PING");
      console.log("Cache response : " + await cacheConnection.ping());
    
      // SET
      console.log("\nCache command: SET Message");
      console.log("Cache response : " + await cacheConnection.set("Message",
          "Hello! The cache is working from Node.js!"));
    
      // GET
      console.log("\nCache command: GET Message");
      console.log("Cache response : " + await cacheConnection.get("Message"));
    
      // Client list, useful to see if connection list is growing...
      console.log("\nCache command: CLIENT LIST");
      console.log("Cache response : " + await cacheConnection.sendCommand(["CLIENT", "LIST"]));
    
      cacheConnection.disconnect();
    
      return "Done"
    }
    
    main().then((result) => console.log(result)).catch(ex => console.log(ex));
    
  4. Ejecute el script mediante Node.js:

    node redistest.js
    
  5. Compruebe que la salida del código tiene un aspecto similar al de este ejemplo:

    Cache command: PING
    Cache response : PONG
    
    Cache command: GET Message
    Cache response : Hello! The cache is working from Node.js!
    
    Cache command: SET Message
    Cache response : OK
    
    Cache command: GET Message
    Cache response : Hello! The cache is working from Node.js!
    
    Cache command: CLIENT LIST
    Cache response : id=10017364 addr=76.22.73.183:59380 fd=221 name= age=1 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=26 qbuf-free=32742 argv-mem=10 obl=0 oll=0 omem=0 tot-mem=61466 ow=0 owmem=0 events=r cmd=client user=default numops=6
    
    Done
    

Creación de una aplicación de JavaScript de ejemplo que tenga reautenticación

Los tokens de acceso de Microsoft Entra ID tienen una duración limitada de aproximadamente 75 minutos. Para mantener una conexión a la memoria caché, debe actualizar el token.

En este ejemplo se muestra cómo actualizar el token mediante JavaScript:

  1. Cree un archivo de script denominado redistestreauth.js.

  2. Agregue el ejemplo siguiente de JavaScript al archivo:

     const { createClient } = require("redis");
     const { DefaultAzureCredential } = require("@azure/identity");
    
     async function returnPassword(credential) {
         const redisScope = "https://redis.azure.com/.default";
    
         // Fetch a Microsoft Entra token to be used for authentication. This token will be used as the password.
         return credential.getToken(redisScope);
     }
    
     async function main() {
       // Construct a Token Credential from Identity library, e.g. ClientSecretCredential / ClientCertificateCredential / ManagedIdentityCredential, etc.
       const credential = new DefaultAzureCredential();
       let accessToken = await returnPassword(credential);
    
       // Create redis client and connect to the Azure Cache for Redis over the TLS port using the access token as password.
       let cacheConnection = createClient({
         username: process.env.REDIS_SERVICE_PRINCIPAL_ID,
         password: accessToken.token,
         url: `redis://${process.env.AZURE_CACHE_FOR_REDIS_HOST_NAME}:6380`,
         pingInterval: 100000,
         socket: { 
           tls: true,
           keepAlive: 0 
         },
       });
    
       cacheConnection.on("error", (err) => console.log("Redis Client Error", err));
       await cacheConnection.connect();
    
       for (let i = 0; i < 3; i++) {
         try {
             // PING command
             console.log("\nCache command: PING");
             console.log("Cache response : " + await cacheConnection.ping());
    
             // SET
             console.log("\nCache command: SET Message");
             console.log("Cache response : " + await cacheConnection.set("Message",
                 "Hello! The cache is working from Node.js!"));
    
             // GET
             console.log("\nCache command: GET Message");
             console.log("Cache response : " + await cacheConnection.get("Message"));
    
             // Client list, useful to see if connection list is growing...
             console.log("\nCache command: CLIENT LIST");
             console.log("Cache response : " + await cacheConnection.sendCommand(["CLIENT", "LIST"]));
           break;
         } catch (e) {
           console.log("error during redis get", e.toString());
           if ((accessToken.expiresOnTimestamp <= Date.now())|| (redis.status === "end" || "close") ) {
             await redis.disconnect();
             accessToken = await returnPassword(credential);
             cacheConnection = createClient({
               username: process.env.REDIS_SERVICE_PRINCIPAL_ID,
               password: accessToken.token,
               url: `redis://${process.env.AZURE_CACHE_FOR_REDIS_HOST_NAME}:6380`,
               pingInterval: 100000,
               socket: {
                 tls: true,
                 keepAlive: 0
               },
             });
           }
         }
       }
     }
    
     main().then((result) => console.log(result)).catch(ex => console.log(ex));
    
  3. Ejecute el script mediante Node.js:

    node redistestreauth.js
    
  4. Compruebe si hay una salida similar a la de este ejemplo:

     Cache command: PING
     Cache response : PONG
    
     Cache command: GET Message
     Cache response : Hello! The cache is working from Node.js!
    
     Cache command: SET Message
     Cache response : OK
    
     Cache command: GET Message
     Cache response : Hello! The cache is working from Node.js!
    
     Cache command: CLIENT LIST
     Cache response : id=10017364 addr=76.22.73.183:59380 fd=221 name= age=1 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=26 qbuf-free=32742 argv-mem=10 obl=0 oll=0 omem=0 tot-mem=61466 ow=0 owmem=0 events=r cmd=client user=default numops=6
    
    

Nota:

Para obtener más ejemplos de cómo usar Microsoft Entra ID para autenticarse en Redis a través de la biblioteca node-redis, consulte el repositorio de GitHub node-redis.

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

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

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

    Recorte de pantalla que muestra una lista de grupos de recursos a elegir para eliminar.

  3. Seleccione Eliminar grupo de recursos.

  4. En el panel Eliminar un grupo de recursos, escriba el nombre del grupo de recursos para confirmar y a continuación, seleccione Eliminar.

    Recorte de pantalla que muestra un cuadro que requiere escribir el nombre del recurso para confirmar la eliminación.

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

Obtención del código de ejemplo

Obtenga el Ejemplo de inicio rápido de Node.js en GitHub.