Cliente Redis para Java: Jedis, Lettuce y Redisson — guía detallada
Redis es un almacén de datos de tipo «clave-valor» de alto rendimiento que funciona en memoria RAM. Para interactuar con Redis desde aplicaciones Java, existen varias bibliotecas maduras. En este artículo, analizaremos los tres clientes Redis más populares para Java: Jedis, Lettuce y Redisson. Conocerá sus características, ventajas y obtendrá ejemplos de código listos para usar para un inicio rápido.
1. Jedis — cliente simple y ligero
Jedis es un cliente minimalista y no seguro para subprocesos, ideal para proyectos simples y aplicaciones monolíticas. Proporciona acceso directo a los comandos de Redis a través de una API simple. Jedis no admite llamadas asíncronas «de fábrica», pero lo compensa con su facilidad de uso.
Agregar dependencia (Maven)
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>5.1.0</version></dependency>Ejemplo: conexión y operaciones básicas
import redis.clients.jedis.Jedis;
public class JedisExample { public static void main(String[] args) { // Conexión a Redis (por defecto localhost:6379) try (Jedis jedis = new Jedis("localhost", 6379)) { // Autenticación (si se ha establecido una contraseña) // jedis.auth("password");
// Establecer un valor jedis.set("user:100", "Alice"); // Obtener un valor String user = jedis.get("user:100"); System.out.println("User: " + user); // User: Alice
// Trabajar con hashes 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
// Establecer TTL (tiempo de vida de la clave) jedis.expire("user:100", 60); // La clave vive 60 segundos } }}Ventajas y desventajas de Jedis
- Ventajas: umbral de entrada mínimo, peso ligero, soporte completo de comandos de Redis.
- Desventajas: no es seguro para subprocesos (requiere un pool de conexiones), no tiene API asíncrona, no tiene soporte integrado para estructuras de datos distribuidas.
2. Lettuce — cliente asíncrono y reactivo
Lettuce es un cliente Redis moderno y seguro para subprocesos, construido sobre Netty. Admite programación síncrona, asíncrona y reactiva (Reactive Streams). Lettuce es ideal para aplicaciones de alta carga y asíncronas en Java 8+.
Agregar dependencia (Maven)
<dependency> <groupId>io.lettuce</groupId> <artifactId>lettuce-core</artifactId> <version>6.3.1.RELEASE</version></dependency>Ejemplo: conexión asíncrona
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) { // Crear el cliente RedisClient redisClient = RedisClient.create("redis://localhost:6379"); // Abrir la conexión try (StatefulRedisConnection<String, String> connection = redisClient.connect()) { RedisAsyncCommands<String, String> async = connection.async(); // Establecer valor de forma asíncrona CompletableFuture<String> setFuture = async.set("key:1", "Hello from Lettuce!").toCompletableFuture(); // Obtener valor de forma asíncrona También en la biblioteca
Envío de Email en C++: bibliotecas e implementación
rustls para Rust: guía completa con ejemplos prácticos
Clientes Redis para Kotlin: Lettuce, Redisson y Kredis
Colas de tareas en C# (.NET): System.Threading.Channels, Hangfire y RabbitMQ
Biblioteca GraphQL en C++: implementación de API con graphql-cpp