Redis 官方主页列出了 JDBC-Redis 和 JRedis。每个的优点/缺点是什么?还有其他选择吗?
7 回答
我试过 JDBC-Redis、Jredis 和 Jedis。JDBC-Redis 不擅长性能。JRedis 和 Jedis 都很快,我用过 Jredis 很多次,但现在我更喜欢 Jedis,因为它很简单,而且我可以随心所欲地处理网络连接错误。
Jedis和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 Data 现在添加了对名为rjc(Redis Java 客户端)的第三个库的支持——不过,我不知道它的优缺点是什么。
Jedis 是一个非常好的客户。我已经使用 jedis 对 redis 进行了一些性能测试。50 个客户端,20 秒内完成 1m 个请求(在旧的 intel 2core 2.6g 机器上,100m 网络上)。如果我可以使用 1000m 网络进行测试,我相信性能会更高。
一个更简单的解决方案是不用担心在最低级别工作,而是使用像 JOhm 这样的对象哈希映射器 (OHM)。JOhm 允许用户使用熟悉的注释来装饰他们现有的对象,以允许持久性到 Redis,而无需任何侵入性代码更改。它甚至不需要任何外部配置。您可以将 OHM 视为 RDBMS 的 ORM 的 NoSQL 对应物。
JOHM 在这里托管
只是一个更新:似乎 jredis 不再那么活跃了,但是 jedis 正在变得强大并且最近实现了一些很棒的功能,它也是 JOhm 的同一开发者。
从他们在 github 上的自述文件中提取:
好的.. 那我可以用 Jedis 做什么?[...]
交易
流水线
发布/订阅
持久性
控制命令
远程服务器控制命令
连接池
分片(MD5,MurmureHash)
分片的关键标签
流水线分片
直到最近我还在六个项目中使用 jredis,很快就将它们全部转移到了 jedis,没有任何意外。
JDBC-Redis 只是 JRedis 数据库的 JDBC 包装器。
如果您打算将代码与不同的后端一起使用,那么 JDBC 是一个不错的选择。注意:它不是一个完整的 JDBC 实现,NOSQL 会流血。
如果您打算继续使用 Redis,那么我建议您使用 API,这将为您提供更大的灵活性。使用 DAO 层模式来封装您的 DB Access,然后您将需要更改。