2013-01-31 10 views
10

私はScalaのRedisクライアントの実装を探しています。クライアントは、Akka先物を使用して、非同期で非ブロッキングである必要があります。 私が見つけた何多かれ少なかれ便利:Scala:Akka先物を使ったRedisクライアントの実装

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

しかし、それらの両方が彼らの問題を抱えています。最初はAkkaの古いバージョンを使用します。これはコンパイルの問題を引き起こし、2番目はAkka先物の代わりにscala.actors.Futures.futureを使用します。 数ヶ月前に会話がありました:groups.google.com/forum/#!msg/akka-user/EDKA2aTigho/_wWcNIz2O3wJ

しかし、私は解決策を見つけることができませんでした。 誰かが似たようなものを持っていましたか?

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

答えて

16

は(非同期+非ブロッキング)反応性であるいくつかの新しいScalaのRedisのライブラリです:
https://github.com/debasishg/scala-redis-nb
https://github.com/etaty/rediscala
https://github.com/Livestream/scredis

+0

素晴らしい仕事、ありがとう!人々はそれが役に立つと確信しています。 – psisoyev

+0

別のものを追加しました。 –

+0

私はhibernate-redisの2番目のキャッシュプロバイダにrediscalaを使用します – Debop

2

scala-redisが現在最適です。これはブロッキングクライアントですが、非同期パターンの例はgiven in the README fileです。また、ライブラリ自体はscala.actors.Futures.futureを使用しないことに注意してください。スペック(テストコード)とREADMEのデモコードのみが実行します。

レディスに保存する必要があるのは、roll your own Redis client with a Spray.io IOBridgeです。

サイドページ上:Akka futures are already in Scala 2.10.0およびscala.actorsis deprecated as of Scala 2.11.0。私は、スカラー・レディスがなぜAkkaとScala 2.10.0に依存しても、なぜscala.actorsを使用しているのか分かりません。

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の約束を完成させることができます。その例は、BlakeのNEScalaトークのスライドの最初のコード例にあります。http://nescala.org/#t-8378162

Twitterの人々は、Twitterの未来が2.10に移行したときに、2.10の将来のAPI互換性を実装すると言います。

scala-redisの著者は、スプレーioを使用するように移植することに興味がありました。ここで

+0

非常に興味深い。私は[ScalaからRedisを使って評価しました](http://keithkim.org/blog/redis-clients-for-scala/)、Akka Futuresおよび/またはAkka IOを使用してメモリ消費量が高いことがわかりました。 – karmakaze

1

、完全な非ブロックと燃えるれるscredisもありScala RedisクライアントはAkka IOの上に構築されています。それはLivestreamでの生産に広く使われています。

関連する問題