Cliente Redis para Java: Jedis, Lettuce e Redisson — visão geral e exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Cliente Redis para Java: visão geral das bibliotecas populares

\n\n

Redis é um armazenamento de dados do tipo chave-valor de alto desempenho, amplamente utilizado para cache, sessões, filas e análises em tempo real. Para trabalhar com Redis a partir do Java, existem várias bibliotecas cliente maduras. Neste artigo, vamos analisar as três mais populares: Jedis, Lettuce e Redisson. Cada uma delas tem suas próprias características, vantagens e cenários de uso.

\n\n

1. Jedis — cliente simples e leve

\n\n

Jedis é um cliente síncrono minimalista para Redis. É fácil de aprender, adequado para projetos pequenos e microsserviços onde a assincronia não é necessária.

\n\n

Características do Jedis:

\n
    \n
  • API síncrona (chamadas bloqueantes).
  • \n
  • Suporte a pool de conexões (JedisPool).
  • \n
  • Suporte completo aos comandos do Redis.
  • \n
  • Não suporta operações assíncronas ou reativas.
  • \n
\n\n

Exemplo de conexão e operações 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        // Criando um pool de conexões\n        try (JedisPool pool = new JedisPool("localhost", 6379);\n             Jedis jedis = pool.getResource()) {\n\n            // Definindo e obtendo um valor\n            jedis.set("user:100", "Alice");\n            String value = jedis.get("user:100");\n            System.out.println("Valor: " + value); // Saída: Alice\n\n            // Trabalhando com listas\n            jedis.lpush("queue", "task1");\n            jedis.lpush("queue", "task2");\n            String task = jedis.rpop("queue");\n            System.out.println("Tarefa da fila: " + task); // Saída: task1\n        }\n    }\n}
\n\n

Quando escolher Jedis:

\n
    \n
  • Projeto simples sem requisitos reativos.
  • \n
  • Necessidade de dependência mínima (um único jar).
  • \n
  • Operações bloqueantes clássicas.
  • \n
\n\n

2. Lettuce — cliente assíncrono e reativo

\n\n

Lettuce é um cliente moderno, construído sobre Netty. Ele suporta APIs síncrona, assíncrona e reativa (Reactive Streams). É ideal para sistemas de alta carga.

\n\n

Características do Lettuce:

\n
    \n
  • API assíncrona e reativa (baseada no Project Reactor).
  • \n
  • Suporte a clusters Redis, Sentinel, SSL.
  • \n
  • Operações não bloqueantes — alta taxa de transferência.
  • \n
  • Suporte a Redis Pub/Sub, Streams, Transações.
  • \n
\n\n

Exemplo de uso assí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            // Definição assíncrona\n            async.set("key:1", "Olá, Lettuce!");\n\n            // Obtenção assíncrona com callback\n            async.get("key:1").thenAccept(value -> \n                System.out.println("Recebido: " + value)\n            );\n\n            // Pequena pausa para completar a operação assíncrona\n            try { Thread.sleep(100); } catch (InterruptedException e) { }\n        }\n        client.shutdown();\n    }\n}
\n\n

Quando escolher Lettuce:

\n
    \n
  • Sistemas de alta carga com grande volume de requisições.
  • \n
  • Necessidade de assincronia ou programação reativa.
  • \n
  • Trabalho com cluster Redis ou Sentinel.
  • \n
\n\n

3. Redisson — cliente com recursos avançados

\n\n

Redisson não é apenas um cliente, mas um framework completo

Recommendations