Redis-Client für Java: Jedis, Lettuce und Redisson – Überblick und Beispiele

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Redis-Client für Java: Überblick über beliebte Bibliotheken

\n\n

Redis ist ein leistungsstarker Schlüssel-Wert-Datenspeicher, der häufig für Caching, Sitzungen, Warteschlangen und Echtzeitanalysen verwendet wird. Für die Arbeit mit Redis aus Java heraus gibt es mehrere ausgereifte Client-Bibliotheken. In diesem Artikel betrachten wir die drei beliebtesten: Jedis, Lettuce und Redisson. Jede von ihnen hat ihre eigenen Besonderheiten, Vorteile und Anwendungsszenarien.

\n\n

1. Jedis – Einfacher und leichter Client

\n\n

Jedis ist ein minimalistischer synchroner Client für Redis. Er ist einfach zu erlernen und eignet sich gut für kleine Projekte und Microservices, bei denen keine Asynchronität erforderlich ist.

\n\n

Besonderheiten von Jedis:

\n
    \n
  • Synchrones API (blockierende Aufrufe).
  • \n
  • Unterstützung von Verbindungspools (JedisPool).
  • \n
  • Vollständige Unterstützung aller Redis-Befehle.
  • \n
  • Unterstützt keine asynchronen oder reaktiven Operationen.
  • \n
\n\n

Beispiel für Verbindung und grundlegende Operationen:

\n
import redis.clients.jedis.Jedis;\nimport redis.clients.jedis.JedisPool;\n\npublic class JedisExample {\n    public static void main(String[] args) {\n        // Verbindungspool erstellen\n        try (JedisPool pool = new JedisPool("localhost", 6379);\n             Jedis jedis = pool.getResource()) {\n\n            // Wert setzen und abrufen\n            jedis.set("user:100", "Alice");\n            String value = jedis.get("user:100");\n            System.out.println("Wert: " + value); // Ausgabe: Alice\n\n            // Arbeiten mit Listen\n            jedis.lpush("queue", "task1");\n            jedis.lpush("queue", "task2");\n            String task = jedis.rpop("queue");\n            System.out.println("Aufgabe aus Warteschlange: " + task); // Ausgabe: task1\n        }\n    }\n}
\n\n

Wann Jedis wählen:

\n
    \n
  • Einfaches Projekt ohne reaktive Anforderungen.
  • \n
  • Minimale Abhängigkeit erforderlich (eine jar-Datei).
  • \n
  • Klassische blockierende Operationen.
  • \n
\n\n

2. Lettuce – Asynchroner und reaktiver Client

\n\n

Lettuce ist ein moderner Client, der auf Netty basiert. Er unterstützt synchrone, asynchrone und reaktive (Reactive Streams) APIs. Ideal für hochbelastete Systeme.

\n\n

Besonderheiten von Lettuce:

\n
    \n
  • Asynchrones und reaktives API (basierend auf Project Reactor).
  • \n
  • Unterstützung von Redis-Clustern, Sentinel, SSL.
  • \n
  • Nicht blockierende Operationen – hoher Durchsatz.
  • \n
  • Unterstützung von Redis Pub/Sub, Streams, Transaktionen.
  • \n
\n\n

Beispiel für asynchrone Nutzung:

\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            // Asynchrones Setzen\n            async.set("key:1", "Hallo, Lettuce!");\n\n            // Asynchrones Abrufen mit Callback\n            async.get("key:1").thenAccept(value -> \n                System.out.println("Empfangen: " + value)\n            );\n\n            // Kleine Verzögerung zum Abschluss der asynchronen Operation\n            try { Thread.sleep(100); } catch (InterruptedException e) { }\n        }\n        client.shutdown();\n    }\n}
\n\n

Wann Lettuce wählen:

\n
    \n
  • Hochbelastete Systeme mit vielen Anfragen.
  • \n
  • Notwendigkeit von Asynchronität oder reaktivem Programmieren.
  • \n
  • Arbeit mit Redis-Cluster oder Sentinel.
  • \n
\n\n

3. Redisson – Client mit erweiterten Funktionen

\n\n

Redisson ist nicht nur ein Client, sondern ein vollwertiges Framework

Empfehlungen