10

我正在寻找 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

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

感谢您的回答。

4

4 回答 4

16

以下是一些新的 Scala Redis 库,它们是反应式(异步 + 非阻塞): https:
//github.com/debasishg/scala-redis-nb
https://github.com/etaty/rediscala
https://github .com/Livestream/scredis

于 2013-08-07T18:50:13.810 回答
2

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

如果您只需要在 Redis 中存储一些东西,也可以使用 Spray.io 滚动您自己的 Redis 客户端IOBridge

附带说明:Akka 期货已经在 Scala 2.10.0 中,并且scala.actors 从 Scala 2.11.0 开始被弃用。我不确定为什么使用 scala-redis,scala.actors即使它依赖于 Akka 和 Scala 2.10.0。

于 2013-03-09T23:43:41.007 回答
1

有一个非阻塞客户端返回作为 finagle-redis 模块可用的 Futures。此处的示例用法: 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

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

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

于 2013-04-01T07:20:37.453 回答
1

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

于 2014-08-01T13:26:13.343 回答