Dela via


Snabbstart: Använda Azure Cache for Redis i Java med Redisson Redis-klienten

I den här snabbstarten införlivar du Azure Cache for Redis i en Java-app med Redisson Redis-klienten och JCP-standard-JCache-API:et. Dessa tjänster ger dig åtkomst till en säker, dedikerad cache som är tillgänglig från alla program i Azure. Den här artikeln innehåller två alternativ för att välja den Azure-identitet som ska användas för Redis-anslutningen.

Hoppa till koden på GitHub

Den här snabbstarten använder funktionen Maven-arketyp för att generera status för appen. I snabbstarten uppmanas du att ändra den genererade koden så att den kommer till arbetsexempelappen. Om du vill hoppa direkt till den färdiga koden kan du läsa Java-snabbstarten på GitHub.

Förutsättningar

Skapa en Azure Cache for Redis

  1. Om du vill skapa en cache loggar du in på Azure-portalen och väljer Skapa en resurs.

    Skapa en resurs är markerad i det vänstra navigeringsfönstret.

  2. På sidan Kom igång skriver du Azure Cache for Redis i sökrutan. Välj sedan Skapa.

    Skärmbild av Azure Marketplace med Azure Cache for Redis i sökrutan och skapa markeras med en röd ruta.

  3. På sidan Ny Redis Cache konfigurerar du inställningarna för cacheminnet.

    Inställning Välj ett värde beskrivning
    Abonnemang Listrutan och välj din prenumeration. Prenumerationen som den nya Azure Cache for Redis-instansen ska skapas under.
    Resursgrupp Listrutan och välj en resursgrupp eller välj Skapa ny och ange ett nytt resursgruppsnamn. Namn på den resursgrupp där cacheminnet och andra resurser ska skapas. Genom att placera alla dina appresurser i en resursgrupp kan du enkelt hantera eller ta bort dem tillsammans.
    DNS-namn Ange ett unikt namn. Cachenamnet måste vara en sträng mellan 1 och 63 tecken som endast innehåller siffror, bokstäver eller bindestreck. Namnet måste börja och sluta med ett tal eller en bokstav och får inte innehålla bindestreck i följd. Värdnamnet för cacheinstansen är <DNS-namnet.redis.cache.windows.net>.
    Plats Listrutan och välj en plats. Välj en region nära andra tjänster som använder din cache.
    Cache-SKU Listrutan och välj en SKU. SKU:n avgör vilka parametrar för storlek, prestanda och funktioner som är tillgängliga för cacheminnet. Mer information finns i Översikt över Azure Cache for Redis.
    Cachestorlek Listruta och välj en storlek på cacheminnet Mer information finns i Översikt över Azure Cache for Redis.
  4. Välj fliken Nätverk eller välj knappen Nätverk längst ned på sidan.

  5. På fliken Nätverk väljer du din anslutningsmetod.

  6. Välj fliken Nästa: Avancerat eller välj knappen Nästa: Avancerat längst ned på sidan för att se fliken Avancerat .

    Skärmbild som visar fliken Avancerat i arbetsfönstret och det tillgängliga alternativet att välja.

    • För Basic- eller Standard-cacheminnen växlar du markeringen för en icke-TLS-port. Du kan också välja om du vill aktivera Microsoft Entra-autentisering.
    • För en Premium-cache konfigurerar du inställningarna för icke-TLS-port, klustring, hanterad identitet och datapersistence. Du kan också välja om du vill aktivera Microsoft Entra-autentisering.
  7. Välj fliken Nästa: Taggar eller välj knappen Nästa: Taggar längst ned på sidan.

  8. Du kan också ange namn och värde på fliken Taggar om du vill kategorisera resursen.

  9. Välj Granska + skapa. Du kommer till fliken Granska + skapa där Azure verifierar din konfiguration.

  10. När det gröna verifieringsmeddelandet har skickats väljer du Skapa.

Det tar en stund innan en cache skapas. Du kan övervaka förloppet på översiktssidan för Azure Cache for Redis. När Status visas som Körs är cachen redo att användas.

Hämta värdnamn, portar och åtkomstnycklar från Azure-portalen

För att ansluta din Azure Cache for Redis-server behöver cacheklienten värdnamnet, portarna och en nyckel för cachen. Vissa klienter kan hänvisa till dessa objekt med namn som skiljer sig något. Du kan hämta värdnamnet, portarna och nycklarna från Azure-portalen.

  • Om du vill hämta åtkomstnycklarna väljer du Autentisering på resursmenyn. Välj sedan fliken Åtkomstnycklar .

    Nycklar för Azure Cache for Redis

  • Om du vill hämta värdnamnet och portarna för cacheminnet väljer du Översikt på resursmenyn. Värdnamnet är av formatet DNS name.redis.cache.windows.net>.<

    Egenskaper för Azure Cache for Redis

Konfigurera arbetsmiljön

Stegen i det här avsnittet visar två alternativ för hur du väljer den Azure-identitet som används för Redis-anslutningen. Exempelkoden tittar på värdet för AUTH_TYPE miljövariabeln och vidtar åtgärder beroende på värdet.

Identitetsalternativ 1: Autentisering med Redis-nyckel

Beroende på operativsystemet lägger du till miljövariabler för cachens värdnamn och primär åtkomstnyckel. Öppna en kommandotolk eller ett terminalfönster och konfigurera följande värden:

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

Ersätt platshållarna med följande värden:

  • <your-host-name>: DNS-värdnamnet som hämtats från avsnittet Egenskaper för din Azure Cache for Redis-resurs i Azure-portalen.
  • <your-primary-access-key>: Den primära åtkomstnyckeln som hämtas från avsnittet Åtkomstnycklar i din Azure Cache for Redis-resurs i Azure-portalen.

Identitetsalternativ 2: Autentisering med Microsoft Entra-ID

Beroende på operativsystemet lägger du till miljövariabler för cachens värdnamn och användarnamn. Öppna en kommandotolk eller ett terminalfönster och konfigurera följande värden:

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

Ersätt platshållarna med följande värden:

  • <your-host-name>: DNS-värdnamnet som hämtats från avsnittet Egenskaper för din Azure Cache for Redis-resurs i Azure-portalen.
  • <user-name>: Objekt-ID för din hanterade identitet eller tjänstens huvudnamn.
    • Du kan hämta användarnamnet med hjälp av följande steg:

      1. Gå till Azure Cache for Redis-instansen i Azure-portalen.

      2. I navigeringsfönstret väljer du Konfiguration av dataåtkomst.

      3. På fliken Redis-användare letar du reda på kolumnen Användarnamn .

        Skärmbild av Azure-portalen som visar sidan Azure Cache for Redis Data Access Configuration med fliken Redis-användare och ett användarnamn markerat.

Skapa en ny Java-app

Generera en ny snabbstartsapp med Maven:

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

Ändra till den nya projektkatalogen redis-redisson-test .

Öppna filen pom.xml och lägg till ett beroende för 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>

Spara filen pom.xml.

Öppna App.java och ersätt koden med följande kod:

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

}

Den här koden visar hur du ansluter till en Azure Cache for Redis-instans med hjälp av Microsoft Entra-ID med stöd för JCache API från Redisson-klientbiblioteket. Koden lagrar och hämtar även ett strängvärde i cacheminnet. Mer information om JCache finns i JCache-specifikationen.

Spara App.java.

Kompilera och köra appen

Skapa och kör appen genom att köra följande Maven-kommando:

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

I följande utdata kan du se att Message nyckeln tidigare hade ett cachelagrat värde som angavs i den senaste körningen. Appen uppdatera det cachelagrade värdet.

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

Rensa resurser

Om du planerar att fortsätta med nästa självstudie kan du behålla de resurser som skapats i den här snabbstarten och återanvända dem.

Om du är klar med snabbstartsexemplet kan du ta bort azure-resurserna som skapades i den här snabbstarten för att undvika avgifter.

Viktigt!

Det går inte att ångra borttagningen av en resursgrupp och att resursgruppen och alla resurser i den tas bort permanent. Kontrollera att du inte av misstag tar bort fel resursgrupp eller resurser. Om du har skapat resurserna för att vara värd för det här exemplet i en befintlig resursgrupp som innehåller resurser som du vill behålla kan du ta bort varje resurs individuellt i stället för att ta bort resursgruppen.

  1. Logga in på Azure Portal och välj Resursgrupper.

  2. I textrutan Filtrera efter namn skriver du namnet på resursgruppen. Anvisningarna för den här artikeln använde en resursgrupp med namnet TestResources. I resursgruppen i resultatlistan väljer du Testa resurser och sedan Ta bort resursgrupp.

    Skärmbild av Azure-portalen som visar sidan Resursgrupp med knappen Ta bort resursgrupp markerad.

  3. Ange namnet på resursgruppen för att bekräfta borttagningen och välj sedan Ta bort.

Efter en liten stund tas resursgruppen och resurser som finns i den bort.

Nästa steg

I den här snabbstarten har du lärt dig hur du använder Azure Cache for Redis från ett Java-program med Redisson Redis-klienten och JCache. Fortsätta till nästa snabbstart om du vill använda Azure Cache for Redis med en ASP.NET-webbapp.