10

Scala 用の Redis クライアントの実装を探しています。クライアントは、Akka 先物を使用して、非同期でノンブロッキングでなければなりません。私が多かれ少なかれ有用だと思ったもの:

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

しかし、どちらにも問題があります。1 つ目は、古いバージョンの Akka を使用しているため、コンパイルの問題が発生します。2 つ目は、Akka フューチャーの代わりに scala.actors.Futures.future を使用しています。数か月前に行われた会話を見ました: groups.google.com/forum/#!msg/akka-user/EDKA2aTigho/_wWcNIz2O3wJ

しかし、私は解決策を見つけることができませんでした。似たようなことあった人いますか?

回答ありがとうございます。

4

4 に答える 4

2

現在のところ、 scala-redisが最適なオプションです。これはブロッキング クライアントですが、README ファイルに非同期パターンの例がいくつか示されています。scala.actors.Futures.futureまた、ライブラリ自体は;を使用しないことに注意してください。仕様 (テスト コード) と README のデモ コードのみです。

Redis にいくつかのものを保存するだけでよい場合は、Spray.io を使用して独自の Redis クライアントをロールするIOBridgeこともできます。

補足: Akka の先物は既に Scala 2.10.0にあり、Scala 2.11.0scala.actors の時点で非推奨ですscala.actorsAkka と Scala 2.10.0 に依存しているにもかかわらず、scala-redis が使用されている理由がわかりません。

于 2013-03-09T23:43:41.007 に答える
1

finagle-redis モジュールとして利用可能な Future を返すノンブロッキング クライアントがあります。ここでの使用例: 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 に移行するときに、API 互換性のために 2.10 Future トレイトを実装する Twitter の先物を用意すると言っています。

scala-redis の作成者は、spray-io を使用するように移植することに関心を持っているようでした。その場合、非ブロッキングになります。

于 2013-04-01T07:20:37.453 に答える