Cliente Redis para Java: Jedis, Lettuce y Redisson — descripción general y ejemplos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Cliente Redis para Java: descripción general de las bibliotecas populares

\n\n

Redis es un almacén de datos de alto rendimiento de tipo «clave-valor», ampliamente utilizado para almacenamiento en caché, sesiones, colas y análisis en tiempo real. Para trabajar con Redis desde Java, existen varias bibliotecas cliente maduras. En este artículo, analizaremos las tres más populares: Jedis, Lettuce y Redisson. Cada una tiene sus propias características, ventajas y casos de uso.

\n\n

1. Jedis — un cliente simple y ligero

\n\n

Jedis es un cliente síncrono minimalista para Redis. Es fácil de aprender y muy adecuado para proyectos pequeños y microservicios donde no se requiere asincronía.

\n\n

Características de Jedis:

\n
    \n
  • API síncrona (llamadas bloqueantes).
  • \n
  • Soporte para pool de conexiones (JedisPool).
  • \n
  • Soporte completo para comandos de Redis.
  • \n
  • No admite operaciones asíncronas o reactivas.
  • \n
\n\n

Ejemplo de conexión y operaciones básicas:

\n
import redis.clients.jedis.Jedis;\nimport redis.clients.jedis.JedisPool;\n\npublic class JedisExample {\n    public static void main(String[] args) {\n        // Creamos un pool de conexiones\n        try (JedisPool pool = new JedisPool("localhost", 6379);\n             Jedis jedis = pool.getResource()) {\n\n            // Establecer y obtener un valor\n            jedis.set("user:100", "Alice");\n            String value = jedis.get("user:100");\n            System.out.println("Value: " + value); // Salida: Alice\n\n            // Trabajar con listas\n            jedis.lpush("queue", "task1");\n            jedis.lpush("queue", "task2");\n            String task = jedis.rpop("queue");\n            System.out.println("Task from queue: " + task); // Salida: task1\n        }\n    }\n}
\n\n

Cuándo elegir Jedis:

\n
    \n
  • Proyecto simple sin requisitos reactivos.
  • \n
  • Se necesita una dependencia mínima (un solo jar).
  • \n
  • Operaciones bloqueantes clásicas.
  • \n
\n\n

2. Lettuce — un cliente asíncrono y reactivo

\n\n

Lettuce es un cliente moderno construido sobre Netty. Admite API síncrona, asíncrona y reactiva (Reactive Streams). Es ideal para sistemas de alta carga.

\n\n

Características de Lettuce:

\n
    \n
  • API asíncrona y reactiva (basada en Project Reactor).
  • \n
  • Soporte para clústeres de Redis, Sentinel, SSL.
  • \n
  • Operaciones no bloqueantes — alto rendimiento.
  • \n
  • Soporte para Redis Pub/Sub, Streams, Transacciones.
  • \n
\n\n

Ejemplo de uso asíncrono:

\n
import io.lettuce.core.RedisClient;\nimport io.lettuce.core.api.StatefulRedisConnection;\nimport io.lettuce.core.api.async.RedisAsyncCommands;\n\npublic class LettuceAsyncExample {\n    public static void main(String[] args) {\n        RedisClient client = RedisClient.create("redis://localhost:6379");\n        try (StatefulRedisConnection<String, String> connection = client.connect()) {\n            RedisAsyncCommands<String, String> async = connection.async();\n\n            // Establecer valor de forma asíncrona\n            async.set("key:1", "Hello, Lettuce!");\n\n            // Obtener valor de forma asíncrona con callback\n            async.get("key:1").thenAccept(value -> \n                System.out.println("Received: " + value)\n            );\n\n            // Pequeña pausa para completar la operación asíncrona\n            try { Thread.sleep(100); } catch (InterruptedException e) { }\n        }\n        client.shutdown();\n    }\n}
\n\n

Cuándo elegir Lettuce:

\n
    \n
  • Sistemas de alta carga con gran cantidad de solicitudes.
  • \n
  • Necesidad de asincronía o programación reactiva.
  • \n
  • Trabajo con clúster de Redis o Sentinel.
  • \n
\n\n

3. Redisson — un cliente con capacidades avanzadas

\n\n

Redisson no es solo un cliente, sino un framework completo

Recommendations