Beste Redis-Bibliothek für Java [geschlossen]

75

Die offizielle Redis-Homepage listet JDBC-Redis und JRedis auf. Was sind die Vor- und Nachteile von jedem? Gibt es noch andere Möglichkeiten?

muriloq
quelle
2
Meine Stimme geht auch an jedis. Hat die aktivste Entwicklung, denke ich!
Alfred

Antworten:

73

Sie können auch Jedis verwenden , die sich auch auf der offiziellen Redis-Client-Seite befinden . Es ist kompatibel mit der neuesten Version von Redis.

Aktualisieren

Seit Juni 2012 ist Jedis die von der offiziellen Redis-Seite empfohlene Java-Clientbibliothek.

xetorthio
quelle
8
Sie können Redisson ausprobieren , es implementiert verteilte und skalierbare Java-Datenstrukturen auf dem Redis-Server. Verwenden Sie bekannte Java-Datenstrukturen mit der Kraft von Redis.
Nikita Koksharov
1
Java 8-Kompatibilität?
John Merlino
Was Sie über Salat denken? Es wird auch von der offiziellen Redis-Client-Seite empfohlen
24.
3 "empfohlene" Redis-Clients für Java : Jedis, Salat, Redisson.
Chrisjleu
13

Ich habe JDBC-Redis, Jredis und Jedis ausprobiert. JDBC-Redis ist nicht gut in der Leistung. JRedis und Jedis sind beide schnell, ich benutze Jredis manchmal, aber jetzt bevorzuge ich Jedis, weil es einfach ist und ich Netzwerkverbindungsfehler behandeln kann, wie ich will.

secmask
quelle
10

Sowohl Jedis als auch JRedis werden aktiv entwickelt. Ich persönlich benutze Jedis, da es aktiver zu sein scheint.

Spring bietet einen Wrapper für beide Implementierungen und bietet unter anderem Serialisierung / Deserialisierung:

Person p = new Person("Joe", "Trader", 33);
template.convertAndSet("trader:1", p);
Person samePerson = template.getAndConvert("trader:1", Person.class);
Assert.assertEquals(p, samePerson);     

http://git.springsource.org/spring-data/spring-keyvalue-redis/

UPDATE Spring Data hat jetzt Unterstützung für eine dritte Bibliothek namens rjc (Redis Java Client) hinzugefügt. Ich weiß jedoch nicht, welche Vor- und Nachteile dies hat.

opyate
quelle
5

Eine einfachere Lösung besteht darin, sich nicht um die Arbeit auf der niedrigsten Ebene zu kümmern, sondern stattdessen einen Object Hash Mapper (OHM) wie JOhm zu verwenden. Mit JOhm können Benutzer ihre vorhandenen Objekte mit vertrauten Anmerkungen dekorieren, um Redis die Persistenz ohne invasive Codeänderungen zu ermöglichen. Es benötigt nicht einmal eine externe Konfiguration. Sie können sich das OHM als NoSQL-Gegenstück zum ORM von RDBMS vorstellen.

JOhm wird hier gehostet

gshx
quelle
Tut mir leid, aber ich würde JOhm als JPA-Implementierung eines armen Mannes bezeichnen. Im Wesentlichen müssen Sie die Struktur Ihrer komplexen Objekte mit Anmerkungen definieren. Dies wirft die Frage auf, warum Sie überhaupt versuchen, strukturierte Daten in einer "NoSQL" -Datenbank zu speichern. Auch wurde es in 6 Jahren nicht aktualisiert.
Phil
5

Jedis ist ein sehr guter Kunde. Ich habe jedis benutzt, um einen Leistungstest gegen Redis durchzuführen. 50 Clients, 1 Million Anfragen in 20 Sekunden erledigt (auf einem alten Intel 2core 2.6g Computer, 100m Netzwerk). Ich glaube, dass die Leistung viel höher sein kann, wenn ich 1000m Netzwerk verwenden kann, um den Test durchzuführen.

CharlieQ
quelle
4

Nur ein Update: Es scheint, dass Jredis nicht mehr so ​​aktiv ist. Jedis ist jedoch stark und hat kürzlich einige großartige Funktionen implementiert. Es ist auch der gleiche Entwickler von JOhm.

Auszug aus ihrer Readme auf Github:

Ok .. also was kann ich mit Jedis machen? [...]

Transaktionen

Pipelining

Veröffentlichen / Abonnieren

Beharrlichkeit

Steuerbefehle

Remote-Server-Steuerbefehle

Verbindungspooling

Scherben (MD5, MurmureHash)

Key-Tags zum Sharding

Scherben mit Pipelining

Ich habe jredis bis vor kurzem für ein halbes Dutzend Projekte verwendet und sie alle in kürzester Zeit ohne Überraschungen zu jedis verschoben.

mpenet
quelle
2

JDBC-Redis ist nur ein JDBC-Wrapper für die JRedis-Datenbank.
Wenn Sie Ihren Code mit verschiedenen Backends verwenden möchten, ist JDBC ein guter Weg. HINWEIS: Es handelt sich nicht um eine vollständige JDBC-Implementierung, und NOSQL wird ausgeblutet.
Wenn Sie bei Redis bleiben möchten, würde ich die Verwendung der API vorschlagen, die Ihnen mehr Flexibilität bietet. Verwenden Sie ein DAO-Ebenenmuster, um Ihren DB-Zugriff zu kapseln, und das ist alles, was Sie ändern müssen.

Romain Hippeau
quelle
2
Die Redis-Syntax unterscheidet sich
grundlegend
@muriloq - aber das mechanische Erfassen und Freigeben von Ressourcen ist Standard.
Romain Hippeau
Eigentlich ist JRedis ein Client für Redis, genauso wie JDBC-Redis ein "Connector / Client" für Redis ist. JDBC-Redis muss so gut wie alle SQL-bezogenen Schnittstellen fehlen, was für mich ein bisschen sinnlos klingt, es sei denn, ich habe etwas verpasst ...
Phil