2013-01-31 84 views
10

我正在寻找Scala的Redis客户端实现。客户应该是异步和非阻塞的,使用Akka期货。 我发现或多或少有用: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

但是我未能找到任何解决方案。 任何人都有类似的东西?

感谢您的回答。

回答

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.actorsis deprecated as of Scala 2.11.0。我不确定为什么scala-redis使用scala.actors,尽管它取决于Akka和Scala 2.10.0。

1

有一个非阻塞客户端返回Finagle-redis模块提供的Futures。 用法示例: https://github.com/twitter/finagle/blob/master/finagle-example/src/main/scala/com/twitter/finagle/example/redis/RedisClient.scala

需要注意的是:它目前返回Twitter期货。你可以用它来完成阿卡未来的承诺; Blake的NEScala谈话的幻灯片中的第一个代码示例如下:http://nescala.org/#t-8378162

Twitter上的人们表示,他们将推出Twitter期货,以实现API兼容性的未来特征,当他们转向2.10时。

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

+0

非常有趣。我[使用斯卡拉的Redis进行评估](http://keithkim.org/blog/redis-clients-for-scala/),并使用Akka Futures和/或Akka IO发现高内存消耗。 – karmakaze

1

还有scredis这是一个完整的,无阻塞和炽烈快速构建在Akka IO之上的Scala Redis客户端。它广泛用于Livestream的制作。