Scala:Redis客户端实施Akka期货

时间:2013-01-31 13:58:51

标签: scala redis akka future

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

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

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

    感谢您的回答。

4 个答案:

答案 0 :(得分:16)

答案 1 :(得分:2)

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

如果您只需要在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。

答案 2 :(得分:1)

有一个非阻塞客户端可以将期货作为finagle-redis模块返回。 示例用法: https://github.com/twitter/finagle/blob/master/finagle-example/src/main/scala/com/twitter/finagle/example/redis/RedisClient.scala

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

推特上的人们表示,当他们转向2.10时,Twitter期货会实现API兼容性的2.10 Future特性。

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

答案 3 :(得分:1)

还有scredis这是一个完整的,非阻塞且超快的Scala Redis客户端,构建于Akka IO之上。它广泛用于Livestream的制作。