Freigeben über


Schnellstart: Verwenden von Azure Cache for Redis in Java mit Redisson Redis-Client

In dieser Schnellstartanleitung integrieren Sie Azure Cache for Redis in eine Java-App mit dem Redisson Redis-Client und der JCP-Standard-API JCache. Diese Dienste gewährleisten Ihnen Zugriff auf einen sicheren, dedizierten Zwischenspeicher, der von jeder Anwendung in Azure aus zugänglich ist. Dieser Artikel enthält zwei Optionen zum Auswählen der Azure-Identität, die für die Redis-Verbindung verwendet werden soll.

Überspringen und mit dem Code auf GitHub fortfahren

Dieser Schnellstart verwendet das Maven Archetype-Feature, um das Gerüst für die App zu generieren. In dem Schnellstart werden Sie aufgefordert, den generierten Code so zu ändern, dass er zur Beispiel-App führt. Wenn Sie direkt mit dem fertigen Code fortfahren möchten, finden Sie im Java-Schnellstart auf GitHub weitere Informationen.

Voraussetzungen

Erstellen einer Azure Cache for Redis-Instanz

  1. Um einen Cache zu erstellen, melden Sie sich im Azure-Portal an. Klicken Sie im Menü des Portals auf Ressource erstellen.

    Sceenshot mit hervorgehobener Option „Ressource erstellen“ im linken Navigationsbereich im Azure-Portal.

  2. Geben Sie auf der Seite Erste Schritte den Begriff Azure Cache for Redis in das Suchfeld ein. Suchen Sie in den Suchergebnissen nach Azure Cache for Redis, und wählen Sie dann Erstellen aus.

    Screenshot, der Azure Marketplace mit „Azure Cache for Redis“ im Suchfeld zeigt und die Schaltfläche „Erstellen“ hervorgehoben ist.

  3. Konfigurieren Sie im Bereich Neuer Redis-Cache auf der Registerkarte Grundlagen die folgenden Einstellungen für Ihren Cache:

    Einstellung Aktion Beschreibung
    Abonnement Wählen Sie Ihr Azure-Abonnement. Das Abonnement, das zum Erstellen der neuen Instanz von Azure Cache for Redis verwendet werden soll.
    Ressourcengruppe Wählen Sie eine Ressourcengruppe aus, oder wählen Sie Neu erstellen aus, und geben Sie einen Namen für eine neue Ressourcengruppe ein. Der Name der Ressourcengruppe, in der Ihr Cache und weitere Ressourcen erstellt werden. Wenn Sie alle Ihre App-Ressourcen in einer Ressourcengruppe zusammenfassen, können Sie sie einfacher gemeinsam verwalten oder löschen.
    DNS-Name Geben Sie einen eindeutigen Namen ein. Der Cachename muss eine Zeichenfolge mit 1 bis 63 Zeichen sein, die nur Zahlen, Buchstaben und Bindestriche enthält. Der Name muss mit einer Zahl oder einem Buchstaben beginnen und enden und darf keine aufeinanderfolgenden Bindestriche enthalten. Der Hostname Ihrer Cache-Instanz ist \<DNS name>.redis.cache.windows.net.
    Location Wählen Sie einen Standort aus. Eine Azure-Region, die sich in der Nähe anderer Dienste befindet, die Ihren Cache verwenden.
    Cache-SKU Wählen Sie eine SKU aus. Die SKU bestimmt die Parameter für Größe, Leistung und Features, die für den Cache verfügbar sind. Weitere Informationen finden Sie unter Azure Cache for Redis.
    Cachegröße Wählen Sie eine Cachegröße aus. Weitere Informationen finden Sie unter Azure Cache for Redis.
  4. Wählen Sie die Registerkarte Netzwerk, oder wählen Sie Weiter: Netzwerk.

  5. Wählen Sie auf der Registerkarte Netzwerk eine Konnektivitätsmethode für den Cache aus.

  6. Wählen Sie die Registerkarte Erweitert aus, oder wählen Sie Weiter: Erweitert aus.

  7. Überprüfen oder wählen Sie im Bereich Erweitert basierend auf den folgenden Informationen eine Authentifizierungsmethode aus:

    Screenshot mit dem Bereich „Erweitert“ und den verfügbaren Optionen, die Sie auswählen können.

    • Standardmäßig ist für einen neuen Basic-, Standard- oder Premium-Cache die Microsoft Entra-Authentifizierung aktiviert und die Authentifizierung mit Zugriffsschlüsseln deaktiviert.
    • Für Basic- oder Standard-Caches können Sie sich für die Auswahl eines Nicht-TLS-Ports entscheiden.
    • Für Standard- und Premium-Caches können Sie Verfügbarkeitszonen aktivieren. Verfügbarkeitszonen können nach der Erstellung des Caches nicht deaktiviert werden.
    • Konfigurieren Sie für ein Premium-Cache die Einstellungen für einen Nicht-TLS-Port, das Clustering, die verwaltete Identität und die Datenpersistenz.

    Wichtig

    Für eine optimale Sicherheit empfehlen wir, Microsoft Entra ID mit verwalteten Identitäten zu verwenden, um Anforderungen nach Möglichkeit für Ihren Cache zu autorisieren. Die Autorisierung mit Microsoft Entra ID und verwalteten Identitäten bietet eine höhere Sicherheit und Benutzerfreundlichkeit als die Autorisierung mit gemeinsam verwendetem Schlüssel. Weitere Informationen zum Verwenden verwalteter Identitäten mit Ihren Caches finden Sie unter Verwenden von Microsoft Entra ID für die Cacheauthentifizierung.

  8. (Optional) Wählen Sie die Registerkarte Tags aus, oder wählen Sie Weiter: Tags aus.

  9. Geben Sie optional auf der Registerkarte Tags den Namen und den Wert ein, wenn Sie die Cacheressource kategorisieren möchten.

  10. Wählen Sie die Schaltfläche Überprüfen + erstellen aus.

    Auf der Registerkarte Überprüfen und Erstellen überprüft Azure automatisch Ihre Konfiguration.

  11. Wenn die grüne Meldung Validierung erfolgreich angezeigt wird, wählen Sie Erstellen aus.

Eine neue Cachebereitstellung dauert mehrere Minuten. Sie können den Fortschritt der Bereitstellung im Azure Cache for Redis -Übersichtsbereich überwachen. Wenn der Status Wird ausgeführt anzeigt, kann der Cache verwendet werden.

Abrufen von Hostname, Ports und Zugriffsschlüsseln vom Azure-Portal

Um ihren Azure Cache for Redis-Server zu verbinden, benötigt der Cacheclient den Hostnamen, die Ports und einen Schlüssel für den Cache. Von einigen Clients wird unter Umständen mit etwas anderen Namen auf diese Elemente verwiesen. Sie können den Hostnamen, Ports und Zugriffsschlüssel vom Azure-Portal abrufen.

  • Wählen Sie zum Abrufen der Zugriffsschlüssel im Ressourcenmenü die Option Authentifizierung aus. Wählen Sie dann die Registerkarte Zugriffsschlüssel aus.

    Screenshot: Azure Cache for Redis-Zugriffsschlüssel

  • Um den Hostnamen und die Ports für den Cache abzurufen, wählen Sie im Ressourcenmenü die Option Übersicht aus. Der Hostname hat das Format <DNS-Name>.redis.cache.windows.net.

    Screenshot: Azure Cache for Redis-Eigenschaften

Einrichten der Arbeitsumgebung

Die Schritte in diesem Abschnitt zeigen Ihnen zwei Optionen zum Auswählen der Azure-Identität, die für die Redis-Verbindung verwendet wird. Der Beispielcode untersucht den Wert der Umgebungsvariable AUTH_TYPE und führt abhängig vom Wert Aktionen aus.

Identitätsoption 1: Authentifizierung mit Redis-Schlüssel

Fügen Sie abhängig von Ihrem Betriebssystem Umgebungsvariablen für den Hostnamen Ihres Zwischenspeichers und Ihren primären Zugriffsschlüssel hinzu. Öffnen Sie eine Eingabeaufforderung oder ein Terminalfenster, und richten Sie die folgenden Werte ein:

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

Ersetzen Sie die Platzhalter durch die folgenden Werte:

  • <your-host-name>: Der DNS-Hostname, den Sie im Abschnitt Eigenschaften Ihrer Azure Cache for Redis-Ressource im Azure-Portal abgerufen haben
  • <your-primary-access-key>: Der primäre Zugriffsschlüssel, den Sie im Abschnitt Zugriffsschlüssel Ihrer Azure Cache for Redis-Ressource im Azure-Portal abgerufen haben

Identitätsoption 2: Authentifizierung mit Microsoft Entra ID

Fügen Sie abhängig von Ihrem Betriebssystem Umgebungsvariablen für den Hostnamen Ihres Zwischenspeichers und Ihren Benutzernamen hinzu. Öffnen Sie eine Eingabeaufforderung oder ein Terminalfenster, und richten Sie die folgenden Werte ein:

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

Ersetzen Sie die Platzhalter durch die folgenden Werte:

  • <your-host-name>: Der DNS-Hostname, den Sie im Abschnitt Eigenschaften Ihrer Azure Cache for Redis-Ressource im Azure-Portal abgerufen haben
  • <user-name> = Objekt-ID Ihrer verwalteten Identität oder Ihres Dienstprinzipals.
    • Den Benutzernamen können Sie mit den folgenden Schritten abrufen:

      1. Navigieren Sie im Azure-Portal zu Ihrer Azure Cache for Redis-Instanz.

      2. Wählen Sie im Navigationsbereich Datenzugriffskonfiguration aus.

      3. Gehen Sie auf der Registerkarte Redis-Benutzer zur Spalte Benutzername.

        Screenshot des Azure-Portals mit der Seite „Datenzugriffskonfiguration“ für Azure Cache for Redis und hervorgehobener Registerkarte „Redis-Benutzer“ und einem Wert für „Benutzername“.

Erstellen einer neuen Java-App

Generieren Sie unter Verwendung von Maven eine neue Schnellstart-App:

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

Wechseln Sie zum neuen Projektverzeichnis redis-redisson-test.

Öffnen Sie die Datei pom.xml und fügen Sie eine Abhängigkeit für Redisson hinzu:

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

Speichern Sie die Datei pom.xml .

Öffnen Sie die Datei App.java, und ersetzen Sie den Code durch folgenden Code:

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

}

Dieser Code zeigt Ihnen, wie Sie mithilfe von Microsoft Entra ID und der JCache-API aus der Redisson-Clientbibliothek eine Verbindung mit einer Azure Cache for Redis-Instanz herstellen. Der Code speichert auch einen Zeichenfolgenwert im Cache und ruft ihn ab. Weitere Informationen zu JCache finden Sie in der JCache-Spezifikation.

Speichern Sie App.java.

Erstellen und Ausführen der App

Führen Sie den folgenden Maven-Befehl aus, um die App zu erstellen und auszuführen:

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

In der folgenden Ausgabe können Sie sehen, dass der Schlüssel Message zuvor einen zwischengespeicherten Wert hatte. Die App hat diesen zwischengespeicherten Wert aktualisiert.

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

Bereinigen von Ressourcen

Falls Sie mit dem nächsten Tutorial fortfahren möchten, können Sie die in dieser Schnellstartanleitung erstellten Ressourcen beibehalten und wiederverwenden.

Wenn Sie die Schnellstart-Beispielanwendung nicht mehr benötigen, können Sie die hier erstellten Azure-Ressourcen löschen, um das Anfallen von Kosten zu vermeiden.

Wichtig

Das Löschen einer Ressourcengruppe kann nicht rückgängig gemacht werden. Die Ressourcengruppe und alle darin enthaltenen Ressourcen werden also dauerhaft gelöscht. Achten Sie daher darauf, dass Sie nicht versehentlich die falsche Ressourcengruppe oder die falschen Ressourcen löschen. Falls Sie die Ressourcen zum Hosten dieses Beispiels in einer vorhandenen Ressourcengruppe erstellt haben, die Ressourcen enthält, die Sie behalten wollen, können Sie jede Ressourcen einzeln löschen, statt die Ressourcengruppe zu löschen.

  1. Melden Sie sich beim Azure-Portal an, und klicken Sie auf Ressourcengruppen.

  2. Geben Sie im Textfeld Nach Name filtern den Namen Ihrer Ressourcengruppe ein. In diesem Artikel wurde eine Ressourcengruppe mit dem Namen TestResources verwendet. Klicken Sie in der Ergebnisliste in Ihrer Ressourcengruppe auf Ressource testen und dann auf Ressourcengruppe löschen.

    Screenshot des Azure-Portals mit der Seite „Ressourcengruppe“ und hervorgehobener Schaltfläche „Ressourcengruppe löschen“.

  3. Geben Sie den Namen Ihrer Ressourcengruppe ein, um das Löschen zu bestätigen und wählen Sie Löschen aus.

Daraufhin werden die Ressourcengruppe und alle darin enthaltenen Ressourcen gelöscht.

Nächste Schritte

In dieser Schnellstartanleitung wurde beschrieben, wie Sie Azure Cache for Redis über eine Java-Anwendung mit einem Redisson Redis-Client und JCache verwenden. In der nächsten Schnellstartanleitung erfahren Sie, wie Sie Azure Cache for Redis mit einer ASP.NET-Web-App verwenden.