2013-01-31 3 views
10

Ich suche Redis Client-Implementierung für Scala. Der Kunde sollte asynchron und nicht blockierend sein und Akka-Futures verwenden. Was ich fand mehr oder weniger nützlich:Scala: Redis Client-Implementierung mit Akka Futures

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

Aber beide ihre Probleme haben. Der erste verwendet eine alte Version von Akka, was zu Kompilierungsproblemen führt, der zweite verwendet statt der Akka-Futures scala.actors.Futures.future. sah ich ein Gespräch, der Platz vor einigen Monaten nahm: groups.google.com/forum/#!msg/akka-user/EDKA2aTigho/_wWcNIz2O3wJ

Aber ich konnte keine Lösung finden. Wer hatte etwas ähnliches?

Vielen Dank für Ihre Antworten.

Antwort

2

scala-redis ist derzeit die beste Option. Während es sich um einen blockierenden Client handelt, sind einige Beispiele für asynchrone Muster given in the README file. Beachten Sie auch, dass die Bibliothek selbst scala.actors.Futures.future nicht verwendet; nur Demo-Code in der Spezifikation (Test-Code) und README tut.

Wenn Sie nur ein paar Dinge in Redis speichern müssen, ist es auch möglich, roll your own Redis client with a Spray.io IOBridge.

Auf Nebenbei bemerkt: Akka futures are already in Scala 2.10.0 und scala.actorsis deprecated as of Scala 2.11.0. Ich bin nicht sicher, warum scala-redisis scala.actors verwendet, obwohl es von Akka und Scala 2.10.0 abhängt.

1

Es gibt einen nicht blockierenden Client, der Futures als finagle-redisis-Modul zurückgibt. Beispiel Verwendung hier: https://github.com/twitter/finagle/blob/master/finagle-example/src/main/scala/com/twitter/finagle/example/redis/RedisClient.scala

Ein Vorbehalt: Es gibt derzeit Twitter Futures. Sie können das verwenden, um das Versprechen für eine Akka-Zukunft abzuschließen; ein Beispiel dafür ist auf dem ersten Codebeispiel in den Folien für Blake NEScala Diskussion: http://nescala.org/#t-8378162

Menschen bei Twitter sagen, sie werde die 2.10 Zukunft Merkmal für API-Kompatibilität Twitter Futures implementieren, wenn sie bis 2,10 bewegen.

Der Autor von scala-redisis klang interessiert daran, es zu portieren, um spray-io zu verwenden, in diesem Fall wäre es nicht blockierend.

+0

Ziemlich interessant. Ich habe [mit Redis von Scala evaluieren] (http://keithkim.org/blog/redis-clients-for-scala/) und einen hohen Speicherverbrauch mit Akka Futures und/oder Akka IO gefunden. – karmakaze

1

Es gibt auch scredis, die einen vollständigen, nicht-blockierend ist und lodernde schneller Scala Redis-Client, der auf Akka IO aufbaut. Es wird weitgehend in der Produktion bei Livestream verwendet.