Client Redis pour Java : Jedis, Lettuce et Redisson — guide détaillé
Redis est un magasin de données clé-valeur haute performance fonctionnant en mémoire vive. Pour interagir avec Redis depuis des applications Java, il existe plusieurs bibliothèques matures. Dans cet article, nous examinerons les trois clients Redis les plus populaires pour Java : Jedis, Lettuce et Redisson. Vous découvrirez leurs caractéristiques, leurs avantages et obtiendrez des exemples de code prêts à l'emploi pour un démarrage rapide.
1. Jedis — un client simple et léger
Jedis est un client minimaliste, non thread-safe, idéal pour les projets simples et les applications monolithiques. Il offre un accès direct aux commandes Redis via une API simple. Jedis ne prend pas en charge les appels asynchrones « prêts à l'emploi », mais compense cela par sa simplicité d'utilisation.
Ajout de la dépendance (Maven)
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>5.1.0</version></dependency>Exemple : connexion et opérations de base
import redis.clients.jedis.Jedis;
public class JedisExample { public static void main(String[] args) { // Connexion à Redis (par défaut localhost:6379) try (Jedis jedis = new Jedis("localhost", 6379)) { // Authentification (si un mot de passe est défini) // jedis.auth("password");
// Définition d'une valeur jedis.set("user:100", "Alice"); // Récupération d'une valeur String user = jedis.get("user:100"); System.out.println("User: " + user); // User: Alice
// Travail avec les hachages jedis.hset("user:200", "name", "Bob"); jedis.hset("user:200", "age", "30"); String name = jedis.hget("user:200", "name"); System.out.println("Name: " + name); // Name: Bob
// Définition du TTL (durée de vie de la clé) jedis.expire("user:100", 60); // La clé vit 60 secondes } }}Avantages et inconvénients de Jedis
- Avantages : seuil d'entrée minimal, léger, prise en charge complète des commandes Redis.
- Inconvénients : non thread-safe (nécessite un pool de connexions), pas d'API asynchrone, pas de prise en charge intégrée des structures de données distribuées.
2. Lettuce — un client asynchrone et réactif
Lettuce est un client Redis moderne, thread-safe, construit sur Netty. Il prend en charge la programmation synchrone, asynchrone et réactive (Reactive Streams). Lettuce est idéal pour les applications à forte charge et asynchrones sur Java 8+.
Ajout de la dépendance (Maven)
<dependency> <groupId>io.lettuce</groupId> <artifactId>lettuce-core</artifactId> <version>6.3.1.RELEASE</version></dependency>Exemple : connexion asynchrone
import io.lettuce.core.RedisClient;import io.lettuce.core.api.StatefulRedisConnection;import io.lettuce.core.api.async.RedisAsyncCommands;
import java.util.concurrent.CompletableFuture;
public class LettuceAsyncExample { public static void main(String[] args) { // Création du client RedisClient redisClient = RedisClient.create("redis://localhost:6379"); // Ouverture de la connexion try (StatefulRedisConnection<String, String> connection = redisClient.connect()) { RedisAsyncCommands<String, String> async = connection.async(); // Définition asynchrone d'une valeur CompletableFuture<String> setFuture = async.set("key:1", "Hello from Lettuce!").toCompletableFuture(); // Récupération asynchrone