Ответ 1
Вот несколько новых Scala библиотек Redis, которые являются реактивными (async + non-blocking):
https://github.com/debasishg/scala-redis-nb
https://github.com/etaty/rediscala
https://github.com/Livestream/scredis
Я ищу реализацию клиента Redis для Scala. Клиент должен быть асинхронным и неблокирующим, используя фьючерсы Akka. Что я нашел более или менее полезным:
Но у них обоих есть свои проблемы. Сначала используется старая версия Akka, которая вызывает проблемы с компиляцией, вторая использует Scala.actors.Futures.future вместо фьючерсов Akka. Я видел разговор, который состоялся несколько месяцев назад: groups.google.com/forum/#! Msg/akka-user/EDKA2aTigho/_wWcNIz2O3wJ
Но я не нашел никакого решения. У кого-то было что-то подобное?
Спасибо за ваши ответы.
Вот несколько новых Scala библиотек Redis, которые являются реактивными (async + non-blocking):
https://github.com/debasishg/scala-redis-nb
https://github.com/etaty/rediscala
https://github.com/Livestream/scredis
scala-redis в настоящее время является лучшим вариантом. Хотя это блокирующий клиент, некоторые примеры асинхронных шаблонов приведены в файле README. Также обратите внимание, что сама библиотека не использует scala.actors.Futures.future
; только демо-код в спецификации (тестовый код) и README.
Если вам нужно только сохранить несколько вещей в Redis, также возможно перевернуть свой собственный клиент Redis с помощью Spray.io IOBridge
.
На стороне: Фьючерсы Akka уже находятся в Scala 2.10.0 и scala.actors
устарел на Scala 2.11.0. Я не уверен, почему scala -redis использует scala.actors
, хотя он зависит от Akka и Scala 2.10.0.
Там есть неблокирующий клиент, который возвращает фьючерсы, доступные в качестве модуля finagle-redis. Пример использования здесь: https://github.com/twitter/finagle/blob/master/finagle-example/src/main/scala/com/twitter/finagle/example/redis/RedisClient.scala
Предостережение: в настоящее время он возвращает Фьючерсы на Твиттере. Вы можете использовать это для выполнения обещания для будущего Akka; примером этого является пример первого кода в слайдах для обсуждения Blake NEScala: http://nescala.org/#t-8378162
Люди в Twitter говорят, что у них будет фьючерс на Твиттере, реализующий 2.10 Будущую черту для совместимости API, когда они перейдут на 2.10.
Автор scala -redis выразил желание портировать его на использование спрей-io, и в этом случае он будет неблокировать.
Существует также scredis, который является полным, неблокирующим и стремительным быстрым клиентом Scala Redis, построенным поверх Akka IO, Он широко используется в производстве в Livestream.