最佳 Java Redis 库

官方 Redis 主页列出了 JDBC-Redis 和 JRedis。每种方法的优缺点是什么?还有别的选择吗?

64614 次浏览

JDBC-Redis 只是 JRedis 数据库的 JDBC 包装器。
如果您计划将代码用于不同的后端,那么 JDBC 是一个很好的选择。注意: 这不是一个完整的 JDBC 实现,NOSQL 将渗透进来。
如果你打算继续使用 Redis,那么我建议你使用 API,它会给你更多的灵活性。使用 DAO 层模式封装数据库访问,以后您只需要更改这一层模式。

您也可以使用 绝地武士,它也在 官方 Redis 客户页面中。它与最新版本的 Redis 兼容。

更新

As of June 2012, Jedis is the Java client library recommended by the Redis official page.

JedisJRedis都在积极开发中。我个人使用绝地武士,因为它似乎更积极地开发。

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/

UPDATE Spring Data 现在增加了对第三个库 rjc(Redis Java Client)的支持——尽管我不知道它的优缺点是什么。

一个更简单的解决方案是不用担心在最底层工作,而是使用对象哈希映射器(OHM) ,比如 JOhm。JOhm 允许用户使用熟悉的注释来装饰他们现有的对象,从而允许持久化到 Redis,而不需要对代码进行任何侵入性的更改。它甚至不需要任何外部配置。您可以将 OHM 看作是与 RDBMS 的 ORM 相对应的 NoSQL。

约姆主持 给你

I've tried JDBC-Redis, Jredis and Jedis. JDBC-Redis 不擅长性能。JRedis 和 Jedis 都很快,我多次使用 JRedis,但现在我更喜欢 Jedis,因为它很简单,而且我可以随心所欲地处理网络连接错误。

只是一个更新: 看起来 jredis 不再那么活跃了,但是 jedis 正在强大,并且最近实现了一些很棒的特性,它也是同一个 JOhm 的开发者。

摘自他们的自述:

好吧,那我该拿绝地武士怎么办? [...]

交易

流水线

发布/订阅

坚持不懈

控制指令

远程服务器控制命令

连接池

Sharding (MD5, MurmureHash)

用于分片的键标记

使用管道进行分片

直到最近,我还在用 Jredis 做六个项目,很快就把他们都转移到了 Jedis 手里,毫无意外。

绝地武士是个很好的客户。我用绝地武士做了一些性能测试。50个客户端,在20秒内完成100万个请求(在一台旧的 Intel 2core 2.6 g 机器上,100米网络)。我相信如果我能使用1000米网络进行测试,性能会更高。