我正在寻找Scala的Redis客户端实现。使用Akka期货,客户端应该是异步和非阻塞的。 我发现或多或少有用的东西:
但他们两个都有他们的问题。第一个使用旧版本的Akka,这会导致编译问题,第二个使用scala.actors.Futures.future而不是Akka期货。 我看到几个月前发生的一次对话:groups.google.com/forum /#!msg / akka-user / EDKA2aTigho / _wWcNIz2O3wJ
但我没有找到任何解决方案。 有人有类似的东西?
感谢您的回答。
答案 0 :(得分:16)
以下是一些Reactive(异步+非阻塞)的新Scala Redis库:
https://github.com/debasishg/scala-redis-nb
https://github.com/etaty/rediscala
https://github.com/Livestream/scredis
答案 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.0和scala.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的制作。