Mehr als eine NoSQL-Datenbank

Redis - klein und universell

Eberhard Wolff


Redis [1] ist eine Abkürzung für Remote Dictionary Server und positioniert sich als ein „Advanced Key-Value Store“. Das Projekt steht Open Source zur Verfügung, die Entwicklung wird von Pivotal gesponsert – die Entwickler werden für ihre Arbeit bezahlt, aber es gibt keine kommerziellen Supportverträge und keine kommerzielle Version von Pivotal für diese Software.

Die erste Eigenschaft von Redis ist die Einfachheit: Die Datenbank ist ein verhältnismäßig kleines C-Projekt. Mit Telnet kann man dann auch auf den Server zugreifen und einfache Änderungen vornehmen. Redis ist ein Key-Value Store – und so kann man mit dem Kommando SET meinKey meinWert einen Wert unter einem Schlüssel ablegen.

Und Redis ist auch extrem schnell: Die Daten werden im Speicher gehalten. Natürlich müssen sie auch auf ein Speichermedium geschrieben werden. Dazu nutzt Redis einen asynchronen Ansatz. So entstehen bei Schreiboperationen keine Wartezeiten. Das Werkzeug redis-benchmark kann genutzt werden, um den Durchsatz einer Redis-Installation zu messen.

Die Nutzung von Java aus ist mit verschiedenen Bibliotheken möglich. So gibt es Bibliotheken wie den empfohlenen Client Jedis [2], JRedis [3] oder RJC [4], die einen Zugriff auf das Redis-API von Java aus zulassen. Diese Werkzeuge bieten jedoch nur eine einfache Unterstützung des API – also beispielsweise Anfragen und Änderungen an den Daten. Für diesen Artikel nutzen wir hingegen Spring Data Redis [5]. Dieses API setzt auf den Low-Level-APIs auf und gehört zur Spring-Data-Familie. Die Projekte dieser Familie bieten einen einheitlichen Zugriff auf verschiedene Datenbanken. Dabei werden dieselben Konzepte genutzt, was beispielsweise das Design des API angeht, außerdem werden dieselben Exceptions in allen APIs genutzt. So ist es für Entwickler einfacher, mit den verschiedenen Data Stores zu arbeiten oder sich in einen neuen Data Store einzuarbeiten.

Es ist möglich, den Zugriff auf Redis mithilfe von Spring Data Redis direkt im Java-Code zu konfigurieren, ohne dabei den Dependency-Injection-Container zu nutzen. Listing 1 zeigt als Alternative eine Konfiguration mit Spring. Ein JedisConnectionFactor dient als Basis – hier wird als Low-Level-API Jedis verwendet. Das RedisTemplate baut darauf auf und verwendet außerdem RedisSerializer wie den IntegerSerializer und den StringSerializer, um die Keys und Values zu konvertieren. Als RedisSerializer stehen verschiedene Strategien zur Auswahl, um Objekte mit Java-Serialisierung, XML oder JSON in der D...

Mehr als eine NoSQL-Datenbank

Redis - klein und universell

Eberhard Wolff


Redis [1] ist eine Abkürzung für Remote Dictionary Server und positioniert sich als ein „Advanced Key-Value Store“. Das Projekt steht Open Source zur Verfügung, die Entwicklung wird von Pivotal gesponsert – die Entwickler werden für ihre Arbeit bezahlt, aber es gibt keine kommerziellen Supportverträge und keine kommerzielle Version von Pivotal für diese Software.

Die erste Eigenschaft von Redis ist die Einfachheit: Die Datenbank ist ein verhältnismäßig kleines C-Projekt. Mit Telnet kann man dann auch auf den Server zugreifen und einfache Änderungen vornehmen. Redis ist ein Key-Value Store – und so kann man mit dem Kommando SET meinKey meinWert einen Wert unter einem Schlüssel ablegen.

Und Redis ist auch extrem schnell: Die Daten werden im Speicher gehalten. Natürlich müssen sie auch auf ein Speichermedium geschrieben werden. Dazu nutzt Redis einen asynchronen Ansatz. So entstehen bei Schreiboperationen keine Wartezeiten. Das Werkzeug redis-benchmark kann genutzt werden, um den Durchsatz einer Redis-Installation zu messen.

Die Nutzung von Java aus ist mit verschiedenen Bibliotheken möglich. So gibt es Bibliotheken wie den empfohlenen Client Jedis [2], JRedis [3] oder RJC [4], die einen Zugriff auf das Redis-API von Java aus zulassen. Diese Werkzeuge bieten jedoch nur eine einfache Unterstützung des API – also beispielsweise Anfragen und Änderungen an den Daten. Für diesen Artikel nutzen wir hingegen Spring Data Redis [5]. Dieses API setzt auf den Low-Level-APIs auf und gehört zur Spring-Data-Familie. Die Projekte dieser Familie bieten einen einheitlichen Zugriff auf verschiedene Datenbanken. Dabei werden dieselben Konzepte genutzt, was beispielsweise das Design des API angeht, außerdem werden dieselben Exceptions in allen APIs genutzt. So ist es für Entwickler einfacher, mit den verschiedenen Data Stores zu arbeiten oder sich in einen neuen Data Store einzuarbeiten.

Es ist möglich, den Zugriff auf Redis mithilfe von Spring Data Redis direkt im Java-Code zu konfigurieren, ohne dabei den Dependency-Injection-Container zu nutzen. Listing 1 zeigt als Alternative eine Konfiguration mit Spring. Ein JedisConnectionFactor dient als Basis – hier wird als Low-Level-API Jedis verwendet. Das RedisTemplate baut darauf auf und verwendet außerdem RedisSerializer wie den IntegerSerializer und den StringSerializer, um die Keys und Values zu konvertieren. Als RedisSerializer stehen verschiedene Strategien zur Auswahl, um Objekte mit Java-Serialisierung, XML oder JSON in der D...

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang