【发布时间】:2011-03-04 02:02:39
【问题描述】:
Redis 官方主页列出了 JDBC-Redis 和 JRedis。每个的优点/缺点是什么?还有其他选择吗?
【问题讨论】:
-
我的投票也投给了绝地武士。拥有我认为最活跃的发展!
Redis 官方主页列出了 JDBC-Redis 和 JRedis。每个的优点/缺点是什么?还有其他选择吗?
【问题讨论】:
您也可以使用Jedis,它也在official Redis clients page 中。它与最新版本的 Redis 兼容。
截至2012年6月,Jedis是Redis官网推荐的Java客户端库。
【讨论】:
我尝试过 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 网络进行测试,我相信性能会更高。
【讨论】:
只是一个更新:看起来 jredis 不再那么活跃了,但是 jedis 正在变得强大并且最近实现了一些很棒的功能,它也是 JOhm 的同一开发者。
从他们在 github 上的自述文件中摘录:
好的.. 那我可以用 Jedis 做什么? [...]
交易
流水线
发布/订阅
坚持
控制命令
远程服务器控制命令
连接池
分片(MD5,MurmureHash)
分片的关键标签
流水线分片
直到最近我还在六个项目中使用 jredis,很快就将它们全部转移到了 jedis,没有任何意外。
【讨论】:
一个更简单的解决方案是不用担心在最低级别工作,而是使用像 JOhm 这样的对象哈希映射器 (OHM)。 JOhm 允许用户使用熟悉的注释来装饰他们现有的对象,以允许持久性到 Redis,而无需任何侵入性代码更改。它甚至不需要任何外部配置。您可以将 OHM 视为 RDBMS 的 ORM 的 NoSQL 对应物。
JOhm 托管在here
【讨论】:
JDBC-Redis 只是 JRedis 数据库的 JDBC 包装器。
如果您打算将代码与不同的后端一起使用,那么 JDBC 是一个不错的选择。注意:它不是一个完整的 JDBC 实现,NOSQL 会流血。
如果您打算继续使用 Redis,那么我建议您使用 API,这将为您提供更大的灵活性。使用 DAO 层模式来封装您的 DB Access,然后您将需要进行更改。
【讨论】: