Compartir a través de


Inicio rápido: Uso de Azure Cache for Redis en Java con el cliente de Redis, Redisson

En este inicio rápido, incorporará Azure Cache for Redis en una aplicación Java mediante el cliente Redis de Redisson y la API estándar de JCache, JCP. Estos servicios proporcionan acceso a una caché dedicada segura a la que se puede acceder desde cualquier aplicación de Azure. En este artículo se proporcionan dos opciones para seleccionar la identidad de Azure que se usará para la conexión de Redis.

Ir al código en GitHub

En este inicio rápido se usa la característica de arquetipo de Maven para generar el scaffolding para la aplicación. El inicio rápido lo dirige para que modifique el código generado para que llegue a la aplicación de trabajo de ejemplo. Si quiere pasar directamente al código completado, consulte Inicio rápido de Java en GitHub.

Requisitos previos

Creación de una instancia de Azure Redis Cache

  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.

Recuperación del nombre de host, los puertos y las claves de acceso desde Azure Portal

Para conectar el servidor de Azure Cache for Redis, el cliente de dicha caché necesita el nombre de host, los puertos y una clave para 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 de Azure Portal.

  • Para obtener las claves de acceso, seleccione Autenticación en el menú Recurso. A continuación, seleccione la pestaña Claves de acceso.

    Captura de pantalla que muestra las claves de acceso de Azure Cache for Redis.

  • Para obtener el nombre de host y los puertos de la memoria caché, seleccione Información general en el menú Recurso. El nombre de host tiene el formato <nombre_DNS>.redis.cache.windows.net.

    Captura de pantalla que muestra las propiedades de Azure Cache for Redis.

Configuración del entorno de trabajo

En los pasos de esta sección se muestran dos opciones para seleccionar la identidad de Azure que se usa para la conexión de Redis. El código de ejemplo examina el valor de la variable de entorno AUTH_TYPE y realiza acciones en función del valor.

Opción de identidad 1: Autenticación con clave de Redis

En función del sistema operativo, agregue las variables de entorno para el nombre de host y la clave de acceso primaria de la caché. Abra un símbolo del sistema o una ventana de terminal y configure los siguientes valores:

export REDIS_CACHE_HOSTNAME=<your-host-name>.redis.cache.windows.net
export REDIS_CACHE_KEY=<your-primary-access-key>
export AUTH_TYPE=RedisKey

Reemplace los marcadores de posición por los siguientes valores:

  • <your-host-name>: nombre de host DNS, que se obtiene en la sección Propiedades del recurso de Azure Cache for Redis en Azure Portal.
  • <your-primary-access-key>: clave de acceso principal, que se obtiene en la sección Claves de acceso del recurso de Azure Cache for Redis en Azure Portal.

Opción de identidad 2: Autenticación con Microsoft Entra ID

En función del sistema operativo, agregue las variables de entorno para el nombre de host y el nombre de usuario de la caché. Abra un símbolo del sistema o una ventana de terminal y configure los siguientes valores:

export REDIS_CACHE_HOSTNAME=<your-host-name>.redis.cache.windows.net
export USER_NAME=<user-name>
export AUTH_TYPE=MicrosoftEntraID

Reemplace los marcadores de posición por los siguientes valores:

  • <your-host-name>: nombre de host DNS, que se obtiene en la sección Propiedades del recurso de Azure Cache for Redis en Azure Portal.
  • <user-name> = Id. de objeto de la identidad administrada o de la entidad de servicio.
    • Puede obtener el nombre de usuario mediante los pasos siguientes:

      1. En Azure Portal, vaya a la instancia de Azure Cache for Redis.

      2. En el panel de navegación, seleccione Configuración de acceso a datos.

      3. En la pestaña Usuarios de Redis, busque la columna Nombre de usuario.

        Captura de pantalla de Azure Portal que muestra la página Configuración de acceso a datos de Azure Cache for Redis con la pestaña Usuarios de Redis y un valor de nombre de usuario resaltado.

Creación de una nueva aplicación Java

Con Maven, genere una nueva aplicación de inicio rápido:

mvn archetype:generate \
    -DarchetypeGroupId=org.apache.maven.archetypes \
    -DarchetypeArtifactId=maven-archetype-quickstart \
    -DarchetypeVersion=1.3 \
    -DinteractiveMode=false \
    -DgroupId=example.demo \
    -DartifactId=redis-redisson-test \
    -Dversion=1.0

Cambie al nuevo directorio del proyecto redis-redisson-test.

Abra el archivo pom.xml y agregue una dependencia para Redisson:

    <dependency>
        <groupId>com.azure</groupId>
        <artifactId>azure-identity</artifactId>
        <version>1.8.2</version>
    </dependency>

    <dependency>
        <groupId>org.redisson</groupId>
        <artifactId>redisson</artifactId>
        <version>3.24.3</version>
    </dependency>

Guarde el archivo pom.xml .

Abra App.java y reemplace el código por el código siguiente:

package example.demo;

import com.azure.core.credential.TokenRequestContext;
import com.azure.identity.DefaultAzureCredential;
import com.azure.identity.DefaultAzureCredentialBuilder;
import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.redisson.jcache.configuration.RedissonConfiguration;

import javax.cache.Cache;
import javax.cache.CacheManager;
import javax.cache.Caching;
import javax.cache.configuration.Configuration;
import javax.cache.configuration.MutableConfiguration;
import java.time.LocalDateTime;


/**
 * Redis test
 *
 */
public class App {
    public static void main(String[] args) {

        Config redissonconfig = getConfig();

        RedissonClient redissonClient = Redisson.create(redissonconfig);

        MutableConfiguration<String, String> jcacheConfig = new MutableConfiguration<>();
        Configuration<String, String> config = RedissonConfiguration.fromInstance(redissonClient, jcacheConfig);

        // Perform cache operations using JCache
        CacheManager manager = Caching.getCachingProvider().getCacheManager();
        Cache<String, String> map = manager.createCache("test", config);

        // Simple get and put of string data into the cache
        System.out.println("\nCache Command  : GET Message");
        System.out.println("Cache Response : " + map.get("Message"));

        System.out.println("\nCache Command  : SET Message");
        map.put("Message",
            String.format("Hello! The cache is working from Java! %s", LocalDateTime.now()));

        // Demonstrate "SET Message" executed as expected
        System.out.println("\nCache Command  : GET Message");
        System.out.println("Cache Response : " + map.get("Message"));

        redissonClient.shutdown();
    }

    private static Config getConfig(){
        if ("MicrosoftEntraID".equals(System.getenv("AUTH_TYPE"))) {
            System.out.println("Auth with Microsoft Entra ID");
            return getConfigAuthWithAAD();
        } else if ("RedisKey".equals(System.getenv("AUTH_TYPE"))) {
            System.out.println("Auth with Redis key");
            return getConfigAuthWithKey();
        }
        System.out.println("Auth with Redis key");
        return getConfigAuthWithKey();
    }

    private static Config getConfigAuthWithKey() {
        // Connect to the Azure Cache for Redis over the TLS/SSL port using the key
        Config redissonconfig = new Config();
        redissonconfig.useSingleServer().setPassword(System.getenv("REDIS_CACHE_KEY"))
            .setAddress(String.format("rediss://%s:6380", System.getenv("REDIS_CACHE_HOSTNAME")));
        return redissonconfig;
    }

    private static Config getConfigAuthWithAAD() {
        //Construct a Token Credential from Identity library, e.g. DefaultAzureCredential / ClientSecretCredential / Client CertificateCredential / ManagedIdentityCredential etc.
        DefaultAzureCredential defaultAzureCredential = new DefaultAzureCredentialBuilder().build();

        // Fetch a Microsoft Entra token to be used for authentication.
        String token = defaultAzureCredential
            .getToken(new TokenRequestContext()
                .addScopes("acca5fbb-b7e4-4009-81f1-37e38fd66d78/.default")).block().getToken();

        // Connect to the Azure Cache for Redis over the TLS/SSL port using the key
        Config redissonconfig = new Config();
        redissonconfig.useSingleServer()
            .setAddress(String.format("rediss://%s:6380", System.getenv("REDIS_CACHE_HOSTNAME")))
            .setUsername(System.getenv("USER_NAME")) // (Required) Username is Object ID of your managed identity or service principal
            .setPassword(token); // Microsoft Entra access token as password is required.
        return redissonconfig;
    }

}

Este código muestra cómo conectarse a una instancia de Azure Cache for Redis mediante Microsoft Entra ID con compatibilidad con la API de JCache desde la biblioteca cliente de Redisson. El código también almacena y recupera un valor de cadena en la memoria caché. Para obtener más información sobre JCache, consulte la especificación de JCache.

Guarde App.java.

Compilar y ejecutar la aplicación

Ejecute el siguiente comando de Maven para compilar y ejecutar la aplicación:

mvn compile exec:java -Dexec.mainClass=example.demo.App

En la salida siguiente, puede ver que la clave Message tuvo anteriormente un valor almacenado en caché que se estableció en la última ejecución. La aplicación actualizó ese valor almacenado en caché.

Cache Command  : GET Message
Cache Response : Hello! The cache is working from Java! 2023-12-05T15:13:11.398873

Cache Command  : SET Message

Cache Command  : GET Message
Cache Response : Hello! The cache is working from Java! 2023-12-05T15:45:45.748667

Limpieza de recursos

Si planea continuar con el tutorial siguiente, puede mantener los recursos creados en este inicio rápido y volverlos a usar.

En caso contrario, si ya ha terminado con la aplicación de ejemplo de la guía de inicio rápido, puede eliminar los recursos de Azure creados en este tutorial para evitar cargos.

Importante

La eliminación de un grupo de recursos es irreversible y el grupo de recursos y todos los recursos que contiene se eliminarán de forma permanente. Asegúrese de no eliminar por accidente el grupo de recursos o los recursos equivocados. Si ha creado los recursos para hospedar este ejemplo en un grupo de recursos existente que contiene recursos que quiere conservar, puede eliminar cada recurso individualmente en lugar de eliminar el grupo de recursos.

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

  2. Escriba el nombre del grupo de recursos en el cuadro de texto Filtrar por nombre. En las instrucciones de este artículo se usa un grupo de recursos llamado TestResources. En el grupo de recursos de la lista de resultados, seleccione Probar recursos y después, Eliminar grupo de recursos.

    Captura de pantalla de Azure Portal que muestra la página Grupo de recursos con el botón Eliminar grupo de recursos resaltado.

  3. Escriba el nombre del grupo de recursos para confirmar la eliminación y, después, seleccione Eliminar.

Transcurridos unos instantes, el grupo de recursos y todos los recursos que contiene se eliminan.

Pasos siguientes

En este inicio rápido, ha aprendido a usar Azure Cache for Redis desde una aplicación Java con el cliente Redis de Redisson y JCache. Continúe con el siguiente inicio rápido para usar Azure Redis Cache con una aplicación web ASP.NET.