【问题标题】:Scala: Redis client implementation with Akka futuresScala:使用 Akka 期货的 Redis 客户端实现
【发布时间】:2013-01-15 15:46:36
【问题描述】:

我正在寻找 Scala 的 Redis 客户端实现。客户端应该是异步和非阻塞的,使用 Akka 期货。 我发现或多或少有用的东西:

  1. https://github.com/derekjw/fyrie-redis
  2. https://github.com/debasishg/scala-redis

但他们都有自己的问题。第一个使用旧版本的 Akka,这会导致编译问题,第二个使用 scala.actors.Futures.future 而不是 Akka 期货。 我看到了几个月前发生的对话:groups.google.com/forum/#!msg/akka-user/EDKA2aTigho/_wWcNIz2O3wJ

但我没有找到任何解决方案。 有人有类似的吗?

感谢您的回答。

【问题讨论】:

    标签: scala redis akka future


    【解决方案1】:

    【讨论】:

    • 我使用 rediscala 作为 hibernate-redis 第二个缓存提供者
    【解决方案2】:

    scala-redis 是目前最好的选择。虽然它是一个阻塞客户端,但异步模式的一些示例是given in the README file。另请注意,库本身不使用scala.actors.Futures.future;只有规范中的演示代码(测试代码)和自述文件。

    如果你只需要在Redis中存储一些东西,也可以roll your own Redis client with a Spray.io IOBridge

    旁注:Akka futures are already in Scala 2.10.0scala.actors is deprecated as of Scala 2.11.0。我不确定为什么 scala-redis 使用 scala.actors,即使它依赖于 Akka 和 Scala 2.10.0。

    【讨论】:

      【解决方案3】:

      有一个非阻塞客户端,它返回作为 finagle-redis 模块可用的 Futures。 此处的示例用法: https://github.com/twitter/finagle/blob/master/finagle-example/src/main/scala/com/twitter/finagle/example/redis/RedisClient.scala

      警告:它目前返回 Twitter Futures。您可以使用它来完成 Akka Future 的 Promise; Blake 的 NEScala 演讲幻灯片中的第一个代码示例就是一个例子:http://nescala.org/#t-8378162

      Twitter 人员表示,当他们迁移到 2.10 时,他们将让 Twitter 期货实现 2.10 Future 特征以实现 API 兼容性。

      scala-redis 的作者听起来有兴趣将其移植到使用 spray-io,在这种情况下它将是非阻塞的。

      【讨论】:

      【解决方案4】:

      还有scredis,它是一个基于 Akka IO 构建的完整、非阻塞且超快的 Scala Redis 客户端。它在 Livestream 的生产中广泛使用。

      【讨论】:

        猜你喜欢
        • 2011-06-20
        • 2016-10-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多