2013-01-31 19 views
10

Sto cercando un'implementazione client Redis per Scala. Il cliente dovrebbe essere asincrono e non bloccante, usando i futures Akka. Quello che ho trovato più o meno utili:Scala: implementazione client Redis con Akka futures

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

Ma entrambi hanno i loro problemi. Il primo utilizza la vecchia versione di Akka, che causa problemi di compilazione, la seconda usa scala.actors.Futures.future invece dei futuri Akka. Ho visto una conversazione che si è svolta pochi mesi fa: groups.google.com/forum/#!msg/akka-user/EDKA2aTigho/_wWcNIz2O3wJ

Ma non sono riuscito a trovare alcuna soluzione. Qualcuno aveva qualcosa di simile?

Grazie per le vostre risposte.

risposta

2

scala-redis è attualmente l'opzione migliore. Mentre è un client di blocco, alcuni esempi di pattern asincroni sono given in the README file. Si noti inoltre che la libreria stessa non utilizza scala.actors.Futures.future; solo il codice demo nelle specifiche (codice test) e README.

Se è necessario memorizzare solo alcune cose in Redis, è possibile anche roll your own Redis client with a Spray.io IOBridge.

Su un sidenote: Akka futures are already in Scala 2.10.0 e scala.actorsis deprecated as of Scala 2.11.0. Non sono sicuro del perché scala-redis stia usando scala.actors anche se dipende da Akka e Scala 2.10.0.

1

C'è un client non bloccante che restituisce Futures disponibile come modulo redaginagle. Esempio di utilizzo qui: https://github.com/twitter/finagle/blob/master/finagle-example/src/main/scala/com/twitter/finagle/example/redis/RedisClient.scala

Un avvertimento: attualmente ritorna Twitter Futures. Puoi usarlo per completare la Promessa per un Akka Future; un esempio di questo è sul primo esempio di codice nelle diapositive per il discorso di NEScala di Blake: http://nescala.org/#t-8378162

Le persone su Twitter affermano che i future di Twitter implementeranno il tratto 2.10 Future per la compatibilità dell'API, quando passeranno a 2.10.

L'autore di scala-redis sembrava interessato a portarlo per usare spray-io, nel qual caso sarebbe stato non-bloccante.

+0

Abbastanza interessante. Stavo [valutando l'utilizzo di Redis da Scala] (http://keithkim.org/blog/redis-clients-for-scala/) e ho riscontrato un elevato consumo di memoria usando Akka Futures e/o Akka IO. – karmakaze

1

C'è anche scredis che è un completo, non-blocking e ardente veloce client Scala Redis costruito su Akka IO. È ampiamente utilizzato nella produzione di Livestream.