Démarrage rapide : Utiliser Azure Cache pour Redis avec une application Java et un client Redisson Redis
Dans ce démarrage rapide, vous intégrez Azure Cache pour Redis dans une application Java en utilisant le client Redisson Redis et l’API JCache standard de la Java Community Practice (JCP). Ces services vous permettent d’accéder à un cache sécurisé et dédié accessible à partir de n’importe quelle application dans Azure.
Cet article décrit deux options pour sélectionner l’identité Azure à utiliser pour la connexion Redis :
- Authentification à l’aide d’une clé Redis
- Authentification à l’aide de Microsoft Entra ID
Passer au code
Ce démarrage rapide utilise la fonction d’archétype de Maven pour générer un échafaudage pour une application Java. Le démarrage rapide décrit comment configurer le code pour créer une application fonctionnelle qui se connecte à Azure Cache pour Redis.
Si vous voulez passer directement au code, consultez l’échantillon de démarrage rapide Java sur GitHub.
Prérequis
- Un abonnement Azure. Créez-en un gratuitement
- Microsoft Entra ID pour l’authentification du cache
- Apache Maven
Création d'un cache
Pour créer un cache, connectez-vous au portail Azure. Dans le menu du portail, sélectionnez Créer une ressource.
Dans le volet Démarrer, entrez Azure Cache pour Redis dans la barre de recherche. Dans les résultats de la recherche, localisez Azure Cache pour Redis, puis sélectionnez Créer.
Dans le volet Nouveau cache Redis, sous l’onglet Informations de base, configurez les paramètres suivants pour votre cache :
Setting Action Description Abonnement Sélectionnez votre abonnement Azure. L’abonnement à utiliser pour créer l’instance d’Azure Cache pour Redis. Groupe de ressources Sélectionnez un groupe de ressources ou choisissez Créer nouveau, puis entrez un nouveau nom de groupe de ressources. Le nom du groupe de ressources dans lequel créer votre cache et d’autres ressources. En plaçant toutes les ressources de votre application dans un seul groupe de ressources, vous pouvez facilement les gérer ou les supprimer ensemble. Nom DNS Entrez un nom unique. Le nom du cache doit être une chaîne de 1 à 63 caractères ne contenant que des chiffres, des lettres et des traits d’union. Le nom doit commencer et se terminer par un chiffre ou une lettre, et ne doit pas contenir de traits d’union consécutifs. Le nom d’hôte de votre instance de cache est \<DNS name>.redis.cache.windows.net
.Emplacement Sélectionnez un emplacement. Une région Azure proche d’autres services qui utilisent votre cache. Référence SKU du cache Sélectionnez une référence SKU. La référence SKU détermine les paramètres de taille, de performance et de fonctionnalités disponibles pour le cache. Pour plus d’informations, consultez Présentation d’Azure Cache pour Redis. Taille du cache Sélectionnez une taille de cache. Pour plus d’informations, consultez Présentation d’Azure Cache pour Redis. Sélectionnez l’onglet Mise en réseau ou sélectionnez Suivant : Mise en réseau.
Sous l’onglet Mise en réseau, sélectionnez une méthode de connectivité à utiliser pour le cache.
Sélectionnez l’onglet Avancé ou sélectionnez Suivant : Avancé.
Dans le volet Avancé, vérifiez ou sélectionnez une méthode d’authentification en fonction des informations suivantes :
- Par défaut, pour un nouveau cache Basic, Standard ou Premium, l’authentification Microsoft Entra est activée et l’authentification par clés d’accès est désactivée.
- Pour les caches Basic ou Standard, vous pouvez choisir la sélection d'un port non TLS.
- Pour les caches Standard et Premium, vous pouvez choisir d'activer les zones de disponibilité. Vous ne pouvez pas désactiver les zones de disponibilité une fois le cache créé.
- Pour un cache Premium, configurez les paramètres afin d’utiliser un port non-TLS, le clustering, l’identité managée et la persistance des données.
Important
Pour bénéficier d’une sécurité optimale, nous vous recommandons d’utiliser si possible Microsoft Entra ID avec des identités managées pour autoriser les requêtes sur votre cache. L’autorisation avec Microsoft Entra ID et les identités managées offre davantage de sécurité et de facilité d’utilisation que l’autorisation par clé d’accès partagée. Pour plus d’informations sur l’utilisation d’identités managées avec votre cache, consultez Utiliser Microsoft Entra ID pour l’authentification du cache.
(Facultatif) Sélectionnez l’onglet Étiquettes ou sélectionnez Suivant : Étiquettes.
(Facultatif) Sous l’onglet Étiquettes, entrez un nom et une valeur d’étiquette si vous voulez catégoriser votre ressource de cache.
Sélectionnez le bouton Vérifier + Créer.
Sous l’onglet Vérifier et créer, Azure vérifie automatiquement votre configuration.
Une fois que le message vert Validation réussie s’affiche, sélectionnez Créer.
Le déploiement d’un nouveau cache prend plusieurs minutes. Vous pouvez surveiller la progression du déploiement dans le volet Vue d’ensemble d’Azure Cache pour Redis. Quand État indique En cours d’exécution, le cache est prêt à être utilisé.
Obtenir le nom d’hôte, les ports et la clé d’accès
Pour se connecter à votre serveur Azure Cache pour Redis, le client de cache a besoin du nom d’hôte, des ports et d’une clé d’accès pour le cache. Certains clients peuvent référencer ces éléments en utilisant des noms légèrement différents. Vous pouvez obtenir le nom d’hôte, les ports et les clés dans le portail Azure.
Pour obtenir une clé d’accès pour votre cache :
- Dans le portail Azure, accédez à votre cache.
- Dans le menu du service, sous Paramètres, sélectionnez Authentification.
- Dans le volet Authentification, sélectionnez l’onglet Clés d’accès.
- Pour copier la valeur d’une clé d’accès, sélectionnez l’icône Copier dans le champ de la clé.
Pour obtenir le nom d’hôte et les ports de votre cache :
- Dans le portail Azure, accédez à votre cache.
- Dans le menu du service, sélectionnez Vue d’ensemble.
- Sous Fonctionnalités essentielles, pour Nom d’hôte, sélectionnez l’icône Copier pour copier la valeur du nom d’hôte. La valeur du nom d’hôte est de la forme
<DNS name>.redis.cache.windows.net
. - Pour Ports, sélectionnez l’icône Copier pour copier les valeurs du port.
Configurer l’environnement de travail
Les étapes de cette section vous montrent deux options pour sélectionner une identité Azure à utiliser pour la connexion Redis. L’exemple de code examine la valeur de la variable d’environnement AUTH_TYPE
et puis, prend des mesures en se basant sur la valeur.
S’authentifier à l’aide d’une clé Redis
En fonction de votre système d’exploitation, ajoutez des variables d’environnement pour contenir le nom d’hôte et la clé d’accès principale de votre cache. Dans une fenêtre d’invite de commandes ou de terminal, définissez les valeurs suivantes :
export REDIS_CACHE_HOSTNAME=<your-host-name>.redis.cache.windows.net
export REDIS_CACHE_KEY=<your-primary-access-key>
export AUTH_TYPE=RedisKey
Dans le code précédent, remplacez les espaces réservés par les valeurs suivantes :
<your-host-name>
: le nom d’hôte DNS obtenu à partir de la section Propriétés de votre ressource Azure Cache pour Redis dans le portail Azure.<your-primary-access-key>
: la clé d’accès primaire obtenue à partir de la section Clés d’accès de votre ressource Azure Cache pour Redis dans le portail Azure.
S’authentifier avec Microsoft Entra ID
En fonction de votre système d’exploitation, ajoutez des variables d’environnement pour contenir le nom d’hôte et le nom d’utilisateur de votre cache. Dans une fenêtre d’invite de commandes ou de terminal, configurez les valeurs suivantes :
export REDIS_CACHE_HOSTNAME=<your-host-name>.redis.cache.windows.net
export USER_NAME=<user-name>
export AUTH_TYPE=MicrosoftEntraID
Dans le code précédent, remplacez les espaces réservés par les valeurs suivantes :
<your-host-name>
: le nom d’hôte DNS obtenu à partir de la section Propriétés de votre ressource Azure Cache pour Redis dans le portail Azure.<user-name>
: L’ID d’objet de votre identité managée ou de votre principal de service.Pour obtenir le nom de l’utilisateur(-trice) :
Créer une nouvelle application Java
Générer une nouvelle application de démarrage rapide en utilisant 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
Accédez au nouveau répertoire de projet redis-redisson-test.
Ouvrez le fichier pom.xml et ajoutez une dépendance pour 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>
Enregistrez le fichier pom.xml .
Ouvrez App.java et remplacez le code existant par le code suivant :
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;
}
}
Ce code vous montre comment vous connecter à une instance Azure Cache pour Redis à l’aide de Microsoft Entra ID avec la prise en charge de l’API JCache à partir de la bibliothèque de client Redisson. Le code stocke et récupère également une valeur de chaîne dans le cache. Pour en savoir plus, consultez la spécification JCache.
Enregistrez App.java.
Générer et exécuter l’application
Pour construire et exécuter l’application, exécutez la commande Maven suivante :
La sortie suivante montre que la clé Message
avait précédemment une valeur mise en cache, qui a été définie lors de la dernière exécution. L’application a mis à jour cette valeur mise en 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
Nettoyer les ressources
Si vous souhaitez continuer à utiliser les ressources que vous avez créées dans cet article, conservez le groupe de ressources.
Sinon, pour éviter les frais liés aux ressources, si vous en avez terminé avec les ressources, vous pouvez supprimer le groupe de ressources Azure que vous avez créé.
Avertissement
La suppression d’un groupe de ressources est irréversible. Quand vous supprimez un groupe de ressources, toutes les ressources contenues dans ce groupe sont supprimées définitivement. Veillez à ne pas supprimer accidentellement des ressources ou un groupe de ressources incorrects. Si vous avez créé les ressources dans un groupe de ressources existant qui contient des ressources que vous voulez conserver, vous pouvez supprimer chaque ressource individuellement au lieu de supprimer le groupe de ressources.
Supprimer un groupe de ressources
Connectez-vous au Portail Azure, puis sélectionnez Groupes de ressources.
Sélectionnez le groupe de ressources à supprimer.
S’il existe de nombreux groupes de ressources, dans Filtrer un champ, entrez le nom du groupe de ressources que vous avez créé pour effectuer les étapes de cet article. Dans la liste des résultats de la recherche, sélectionnez le groupe de ressources.
Sélectionnez Supprimer le groupe de ressources.
Dans le volet Supprimer un groupe de ressources, entrez le nom de votre groupe de ressources pour confirmer, puis sélectionnez Supprimer.
Après quelques instants, le groupe de ressources et toutes ses ressources sont supprimés.