Scala: реализация клиента Redis с фьючерсами Akka

Я ищу реализацию клиента Redis для Scala. Клиент должен быть асинхронным и неблокирующим, используя фьючерсы Akka. Что я нашел более или менее полезным:

Но у них обоих есть свои проблемы. Сначала используется старая версия Akka, которая вызывает проблемы с компиляцией, вторая использует Scala.actors.Futures.future вместо фьючерсов Akka. Я видел разговор, который состоялся несколько месяцев назад: groups.google.com/forum/#! Msg/akka-user/EDKA2aTigho/_wWcNIz2O3wJ

Но я не нашел никакого решения. У кого-то было что-то подобное?

Спасибо за ваши ответы.

Ответ 2

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.

Ответ 3

Там есть неблокирующий клиент, который возвращает фьючерсы, доступные в качестве модуля 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, и в этом случае он будет неблокировать.

Ответ 4

Существует также scredis, который является полным, неблокирующим и стремительным быстрым клиентом Scala Redis, построенным поверх Akka IO, Он широко используется в производстве в Livestream.