Condividi tramite


Guida introduttiva: Usare cache di Azure per Redis in Java con il client Redisson Redis

In questa guida introduttiva si incorporano cache di Azure per Redis in un'app Java usando il client Redisson Redis e l'API JCP standard JCache. Questi servizi consentono di accedere a una cache sicura e dedicata accessibile da qualsiasi applicazione all'interno di Azure. Questo articolo offre due opzioni per selezionare l'identità di Azure da usare per la connessione Redis.

Passare al codice in GitHub

Questa guida introduttiva usa la funzionalità archetipo Maven per generare lo scaffolding per l'app. La guida introduttiva indica di modificare il codice generato per arrivare all'app di esempio funzionante. Per passare direttamente al codice completato, vedere la guida introduttiva di Java in GitHub.

Prerequisiti

Creare un'istanza di Cache Redis di Azure

  1. Per creare una cache, accedere al portale di Azure e selezionare Crea una risorsa.

    L'opzione Crea una risorsa evidenziata nel riquadro di spostamento sinistro.

  2. Nella pagina Attività iniziali digitare cache di Azure per Redis nella casella di ricerca. Quindi, selezionare Crea.

    Screenshot di Azure Marketplace con cache di Azure per Redis nella casella di ricerca e la creazione è evidenziata con una casella rossa.

  3. Nella pagina Nuova cache Redis configurare le impostazioni per la cache.

    Impostazione Scegliere un valore Descrizione
    Abbonamento Nell'elenco a discesa selezionare la sottoscrizione. Sottoscrizione in cui creare la nuova istanza della cache di Azure per Redis.
    Gruppo di risorse Nell'elenco a discesa selezionare un gruppo di risorse oppure scegliere Crea nuovo e immettere il nome di un nuovo gruppo di risorse. Nome del gruppo di risorse in cui creare la cache e altre risorse. L'inserimento di tutte le risorse di un'app in un unico gruppo di risorse ne semplifica la gestione o l'eliminazione.
    Nome DNS Immettere un nome univoco. Il nome della cache deve essere una stringa compresa tra 1 e 63 caratteri contenente solo numeri, lettere o trattini. Il nome deve iniziare e terminare con un numero o una lettera e non può contenere trattini consecutivi. Il nome host dell'istanza della cache è <nome DNS>.redis.cache.windows.net.
    Location Nell'elenco a discesa selezionare una località. Selezionare un'area in prossimità di altri servizi che useranno la cache.
    Cache SKU A discesa e selezionare uno SKU. Lo SKU determina le dimensioni, le prestazioni e i parametri delle funzionalità disponibili per la cache. Per altre informazioni, vedere la panoramica su Cache Redis di Azure.
    Dimensioni della cache Elenco a discesa e selezionare una dimensione della cache Per altre informazioni, vedere la panoramica su Cache Redis di Azure.
  4. Selezionare la scheda Rete o selezionare il pulsante Rete nella parte inferiore della pagina.

  5. Nella scheda Rete selezionare il metodo di connettività.

  6. Selezionare la scheda Avanti: Avanzate oppure selezionare il pulsante Avanti: Avanzate nella parte inferiore della pagina per visualizzare la scheda Avanzate.

    Screenshot che mostra la scheda Avanzate nel riquadro di lavoro e l'opzione disponibile da selezionare.

    • Per le cache Basic o Standard, attivare o disattivare la selezione per una porta non TLS. È anche possibile selezionare se si vuole abilitare l'autenticazione di Microsoft Entra.
    • Per una cache Premium, configurare le impostazioni per la porta non TLS, il clustering, l'identità gestita e la persistenza dei dati. È anche possibile selezionare se si vuole abilitare l'autenticazione di Microsoft Entra.
  7. Selezionare la scheda Avanti: Tag oppure selezionare il pulsante Avanti: Tag nella parte inferiore della pagina.

  8. Facoltativamente, nella scheda Tag immettere il nome e il valore se si vuole categorizzare la risorsa.

  9. Selezionare Rivedi e crea. Viene visualizzata la scheda Rivedi e crea in cui Azure convalida la configurazione.

  10. Quando viene visualizzato il messaggio di convalida verde, selezionare Crea.

La creazione di una cache richiede un po' di tempo. È possibile monitorare lo stato di avanzamento nella pagina Panoramica della cache di Azure per Redis. Quando l'elemento Stato indica In esecuzione, la cache è pronta per l'uso.

Recuperare il nome host, le porte e le chiavi di accesso dal portale di Azure

Per connettere il server Cache Redis di Azure, il client della cache deve avere il nome host, le porte e una chiave per la cache. Alcuni client possono fare riferimento a questi elementi usando nomi leggermente diversi. È possibile ottenere il nome host, le porte e le chiavi dal portale di Azure.

  • Per ottenere le chiavi di accesso, selezionare Autenticazione dal menu Risorsa. Selezionare quindi la scheda Chiavi di accesso.

    Chiavi Cache Redis di Azure

  • Per ottenere il nome host e le porte per la cache, selezionare Panoramica dal menu Risorsa. Il formato del nome host è <Nome DNS>.redis.cache.windows.net.

    Domande frequenti su Cache Redis di Azure

Configurare l'ambiente di lavoro

I passaggi descritti in questa sezione illustrano due opzioni per selezionare l'identità di Azure usata per la connessione Redis. Il codice di esempio esamina il valore della AUTH_TYPE variabile di ambiente e esegue un'azione a seconda del valore.

Opzione di identità 1: Autenticazione con chiave Redis

A seconda del sistema operativo, aggiungere variabili di ambiente per il nome host e la chiave di accesso primaria della cache. Aprire un prompt dei comandi o una finestra del terminale e configurare i valori seguenti:

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

Sostituire i segnaposto con i valori seguenti:

  • <your-host-name>: nome host DNS, ottenuto dalla sezione Proprietà della risorsa cache di Azure per Redis nella portale di Azure.
  • <your-primary-access-key>: chiave di accesso primaria, ottenuta dalla sezione Chiavi di accesso della risorsa cache di Azure per Redis nella portale di Azure.

Opzione di identità 2: Autenticazione con Microsoft Entra ID

A seconda del sistema operativo, aggiungere variabili di ambiente per il nome host e il nome utente della cache. Aprire un prompt dei comandi o una finestra del terminale e configurare i valori seguenti:

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

Sostituire i segnaposto con i valori seguenti:

  • <your-host-name>: nome host DNS, ottenuto dalla sezione Proprietà della risorsa cache di Azure per Redis nella portale di Azure.
  • <user-name>: ID oggetto dell'identità gestita o dell'entità servizio.
    • È possibile ottenere il nome utente attenendosi alla procedura seguente:

      1. Nella portale di Azure passare all'istanza di cache di Azure per Redis.

      2. Nel riquadro di spostamento selezionare Configurazione accesso ai dati.

      3. Nella scheda Utenti Redis trovare la colonna Nome utente.

        Screenshot del portale di Azure che mostra la pagina di configurazione di accesso ai dati cache di Azure per Redis con la scheda Utenti Redis e un valore Username evidenziato.

Creare una nuova app Java

Usare Maven e generare una nuova app per la guida introduttiva:

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

Passare alla nuova directory del progetto redis-redisson-test .

Aprire il file pom.xml e aggiungere una dipendenza per 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>

Salvare il file pom.xml .

Aprire App.java e sostituire il codice con il codice seguente:

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

}

Questo codice illustra come connettersi a un'istanza di cache di Azure per Redis usando l'ID Microsoft Entra con il supporto dell'API JCache dalla libreria client Redisson. Il codice, inoltre, archivia e recupera un valore stringa nella cache. Per altre informazioni su JCache, vedere la specifica JCache.

Salvare App.java.

Compilare ed eseguire l'app

Eseguire il comando Maven seguente per compilare ed eseguire l'app:

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

Nell'output seguente è possibile notare che la Message chiave in precedenza aveva un valore memorizzato nella cache, impostato nell'ultima esecuzione. L'app ha aggiornato questo valore memorizzato nella cache.

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

Pulire le risorse

Se si prevede di continuare con l'esercitazione successiva, è possibile mantenere le risorse create in questa guida introduttiva e riutilizzarle.

In caso contrario, se si è terminato il lavoro con l'applicazione di esempio di avvio rapido, è possibile eliminare le risorse di Azure create in questo avvio rapido per evitare i costi correlati.

Importante

L'eliminazione di un gruppo di risorse è irreversibile e comporta l'eliminazione definitiva del gruppo di risorse e di tutte le risorse incluse nel gruppo. Assicurarsi di non eliminare accidentalmente il gruppo di risorse sbagliato o le risorse errate. Se sono state create le risorse per l'hosting di questo esempio all'interno di un gruppo di risorse esistente contenente le risorse da conservare, è possibile eliminare ogni risorsa singolarmente anziché eliminare il gruppo di risorse.

  1. Accedere al portale di Azure e selezionare Gruppi di risorse.

  2. Nella casella di testo Filtra per nome digitare il nome del gruppo di risorse. Le istruzioni per questo articolo usano un gruppo di risorse denominato TestResources. Nel gruppo di risorse nell'elenco dei risultati selezionare Risorse di test e quindi Elimina gruppo di risorse.

    Screenshot del portale di Azure che mostra la pagina Gruppo di risorse con il pulsante Elimina gruppo di risorse evidenziato.

  3. Digitare il nome del gruppo di risorse per confermare l'eliminazione e quindi selezionare Elimina.

Dopo qualche istante il gruppo di risorse e tutte le risorse che contiene vengono eliminati.

Passaggi successivi

In questa guida introduttiva si è appreso come usare cache di Azure per Redis da un'applicazione Java con il client Redisson Redis e JCache. Continuare con la guida introduttiva successiva per usare Cache Redis di Azure con un'app Web ASP.NET.