【问题标题】:Best Redis library for Java [closed]Java的最佳Redis库[关闭]
【发布时间】:2011-03-04 02:02:39
【问题描述】:

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

【问题讨论】:

  • 我的投票也投给了绝地武士。拥有我认为最活跃的发展!

标签: java redis


【解决方案1】:

您也可以使用Jedis,它也在official Redis clients page 中。它与最新版本的 Redis 兼容。

更新

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

【讨论】:

  • 你可以试试Redisson,它在 Redis 服务器之上实现了分布式和可扩展的 Java 数据结构。使用熟悉的 Java 数据结构和 Redis 的强大功能。
  • Java 8 兼容性?
  • 你觉得生菜怎么样?Redis官方客户端页面也推荐了它
  • 3 "recommended" Redis clients for Java 现在:Jedis、生菜、Redisson。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    JedisJRedis 都在积极开发中。我个人使用 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 客户端)的第三个库的支持——不过,我不知道它的优缺点是什么。

    【讨论】:

      【解决方案4】:

      Jedis 是一个非常好的客户。我已经使用 jedis 对 redis 进行了一些性能测试。 50 个客户端,20 秒内完成 1m 个请求(在旧的 intel 2core 2.6g 机器上,100m 网络上)。如果我可以使用 1000m 网络进行测试,我相信性能会更高。

      【讨论】:

        【解决方案5】:

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

        从他们在 github 上的自述文件中摘录:

        好的.. 那我可以用 Jedis 做什么? [...]

        交易

        流水线

        发布/订阅

        坚持

        控制命令

        远程服务器控制命令

        连接池

        分片(MD5,MurmureHash)

        分片的关键标签

        流水线分片

        直到最近我还在六个项目中使用 jredis,很快就将它们全部转移到了 jedis,没有任何意外。

        【讨论】:

          【解决方案6】:

          一个更简单的解决方案是不用担心在最低级别工作,而是使用像 JOhm 这样的对象哈希映射器 (OHM)。 JOhm 允许用户使用熟悉的注释来装饰他们现有的对象,以允许持久性到 Redis,而无需任何侵入性代码更改。它甚至不需要任何外部配置。您可以将 OHM 视为 RDBMS 的 ORM 的 NoSQL 对应物。

          JOhm 托管在here

          【讨论】:

          • 抱歉,我认为 JOhm 是一个可怜的 mans redis JPA 实现。它本质上要求您使用注释定义复杂对象的结构。这就引出了一个问题,即为什么您首先要尝试将结构化数据存储在“NoSQL”数据库中。而且它已经 6 年没有更新了。
          【解决方案7】:

          JDBC-Redis 只是 JRedis 数据库的 JDBC 包装器。
          如果您打算将代码与不同的后端一起使用,那么 JDBC 是一个不错的选择。注意:它不是一个完整的 JDBC 实现,NOSQL 会流血。
          如果您打算继续使用 Redis,那么我建议您使用 API,这将为您提供更大的灵活性。使用 DAO 层模式来封装您的 DB Access,然后您将需要进行更改。

          【讨论】:

          • Redis 语法与标准 SQL 完全不同,因此使用 JDBC 无助于按照您的建议封装不同的后端:无论如何我都必须编写新查询...
          • @muriloq - 但机械获取和释放资源是标准的。
          • 其实 JRedis 是 Redis 的客户端,正如 JDBC-Redis 是 Redis 的“连接器/客户端”。 JDBC-Redis 必须缺少几乎所有与 SQL 相关的接口,这对我来说听起来有点毫无意义,除非我错过了什么......
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-01-16
          • 1970-01-01
          • 2010-09-09
          • 1970-01-01
          • 1970-01-01
          • 2012-05-05
          相关资源
          最近更新 更多