web-dev-qa-db-fra.com

Meilleure bibliothèque Redis pour Java

La page d'accueil officielle de Redis répertorie JDBC-Redis et JRedis. Quels sont les avantages/inconvénients de chacun? Il y a-t-il des alternatives ?

73
muriloq

Vous pouvez également utiliser Jedis , qui se trouve également dans la page officielle des clients Redis . Il est compatible avec la dernière version de Redis.

Mise à jour

Depuis juin 2012, Jedis est la bibliothèque cliente Java recommandée par la page officielle de Redis).

73
xetorthio

J'ai essayé JDBC-Redis, Jredis et Jedis. JDBC-Redis n'est pas bon en termes de performances. JRedis et Jedis sont tous les deux rapides, j'utilise Jredis pendant des temps mais maintenant je préfère Jedis parce que c'est simple, et je peux gérer les erreurs de connexion réseau comme je veux.

12
secmask

Jedis et JRedis sont développés activement. J'utilise personnellement Jedis car il semble être développé plus activement.

Spring fournit un wrapper autour des deux implémentations et fournit la sérialisation/désérialisation, entre autres:

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/

[~ # ~] mise à jour [~ # ~] Spring Data a désormais ajouté la prise en charge d'une troisième bibliothèque appelée rjc (Redis = Java Client) - Je ne sais pas cependant quels sont les avantages/inconvénients.

10
opyate

Une solution plus simple consiste à ne pas s'inquiéter de travailler au niveau le plus bas mais à utiliser un Object Hash Mapper (OHM) comme JOhm à la place. JOhm permet aux utilisateurs de décorer leurs objets existants avec des annotations familières pour permettre la persistance de Redis sans aucune modification de code invasive. Il n'a même pas besoin de configuration externe. Vous pouvez considérer l'OHM comme un équivalent NoSQL à l'ORM du SGBDR.

JOhm est hébergé ici

5
gshx

Jedis est un très bon client. J'ai utilisé des jedis pour faire des tests de performance contre les redis. 50 clients, 1 million de demandes traitées en 20 secondes (sur une ancienne machine Intel 2core 2,6 g, réseau 100 mètres). Je crois que les performances peuvent être beaucoup plus élevées si je peux utiliser un réseau de 1000 m pour faire le test.

5
CharlieQ

juste une mise à jour: il semblerait que jredis ne soit plus aussi actif, jedis va cependant fort et a eu de grandes fonctionnalités récemment implémentées, c'est aussi le même développeur de JOhm.

extrait de leur readme sur github:

Ok .. alors que puis-je faire avec Jedis? [...]

Transactions

Pipelining

Publier/s'abonner

Persistance

commandes de contrôle

Commandes de contrôle du serveur distant

Mise en commun des connexions

Sharding (MD5, MurmureHash)

Porte-clés pour le sharding

Sharding avec pipelining

J'utilisais jredis jusqu'à récemment sur une demi-douzaine de projets, je les ai tous déplacés vers jedis en un rien de temps, sans surprise.

4
mpenet

JDBC-Redis est juste un wrapper JDBC pour la base de données JRedis.
Si vous prévoyez d'utiliser votre code avec différents back-end, JDBC est une bonne solution. REMARQUE: il ne s'agit pas d'une implémentation JDBC complète et le NOSQL saignera.
Si vous allez rester avec Redis, je vous suggère d'utiliser l'API, qui vous donnera plus de flexibilité. Utilisez un modèle de couche DAO pour encapsuler votre accès DB et sur la route, c'est tout ce que vous devrez changer.

2
Romain Hippeau