用于Java的最佳Redis库

官方的Redis主页列出了JDBC-Redis和JRedis。 每个的优点和缺点是什么? 还有其他的select吗?

您也可以使用也在官方Redis客户端页面中的Jedis 。 它与最新版本的Redis兼容。

更新

截至2012年6月,Jedis是Redis官方页面推荐的Java客户端库。

我已经尝试了JDBC-Redis,Jredis和Jedis。 JDBC-Redis不擅长性能。 JRedis和Jedis都很快,我使用Jredis的时间,但现在我更喜欢Jedis,因为它很简单,我可以根据需要处理networking连接错误。

杰迪斯和JRedis正在积极发展。 我个人使用Jedis,因为它似乎更积极地发展。

Spring为这两个实现提供了一个包装,它们提供序列化/反序列化等等。

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/

更新 Spring数据现在增加了对第三个名为rjc (Redis Java Client)的库的支持 – 不过我不知道它的优缺点。

更简单的解决scheme是不用担心在最低级别工作,而是像JOhm那样使用Object Hash Mapper(OHM)。 JOhm允许用户使用熟悉的注释来修饰其现有的对象,以便在没有任何侵入代码更改的情况下允许持久化到Redis。 它甚至不需要任何外部configuration。 您可以将OHM视为与RDBMS的ORM相对的NoSQL。

JOhm 在这里

只是一个更新:看起来jredis不再那么活跃,但是jedis不断发展壮大,并且最近实现了一些很棒的function,它也是JOhm的开发者。

从他们的自述文件提取github:

好的,那么我可以怎么处理杰迪斯呢? […]

交易

stream水线

发布/订阅

坚持

控制命令

远程服务器控制命令

连接池

分片(MD5,MurmureHash)

分片的关键标签

分stream与stream水线

直到最近我还在使用jredis的六七个项目,很快就把它们全部转移到了jedis上,毫不奇怪。

杰迪斯是一个非常好的客户。 我已经使用jedis对redis进行了一些性能testing。 50个客户端,在20秒内完成100万个请求(在一台旧的intel 2core 2.6g机器上,100mnetworking上)。 我相信如果我可以使用1000米的networking进行testing,性能会更高。

JDBC-Redis只是JRedis数据库的JDBC包装器。
如果你打算在不同的后端使用你的代码,那么JDBC是一个好的方法。 注意:这不是一个完整的JDBC实现,NOSQL会stream血。
如果你打算留在Redis那么我会build议使用API​​,这会给你更多的灵活性。 使用DAO图层模式来封装您的数据库访问,并沿着这条路走下去,您将需要改变。