2013-01-31 21 views
10

Tôi đang tìm cách triển khai ứng dụng khách Redis cho Scala. Khách hàng nên không đồng bộ và không bị chặn, sử dụng tương lai của Akka. Những gì tôi thấy ít nhiều hữu ích:Scala: Thực hiện lại ứng dụng khách với Akka tương lai

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

Nhưng cả hai trong số họ có những vấn đề của họ. Đầu tiên sử dụng phiên bản cũ của Akka, gây ra các vấn đề biên dịch, thứ hai sử dụng scala.actors.Futures.future thay vì Akka tương lai. Tôi đã xem một cuộc trò chuyện diễn ra vài tháng trước: groups.google.com/forum/#!msg/akka-user/EDKA2aTigho/_wWcNIz2O3wJ

Nhưng tôi đã không tìm được giải pháp nào. Bất cứ ai cũng có điều gì đó tương tự?

Cảm ơn câu trả lời của bạn.

Trả lời

16

Dưới đây là một vài thư viện Scala Redis mới có phản ứng (async + non-blocking):
https://github.com/debasishg/scala-redis-nb
https://github.com/etaty/rediscala
https://github.com/Livestream/scredis

+0

Công việc tuyệt vời, cảm ơn! Tôi chắc rằng mọi người sẽ thấy nó hữu ích. – psisoyev

+0

Đã thêm một số khác. –

+0

Tôi sử dụng rediscala cho hibernate-redis nhà cung cấp bộ nhớ cache thứ 2 – Debop

2

scala-redis hiện là tùy chọn tốt nhất. Trong khi đó là một ứng dụng khách chặn, một số ví dụ về các mẫu không đồng bộ là given in the README file. Cũng lưu ý rằng chính thư viện không sử dụng scala.actors.Futures.future; chỉ có mã demo trong spec (mã kiểm thử) và README.

Nếu bạn chỉ cần lưu trữ một số thứ trong Redis, bạn cũng có thể roll your own Redis client with a Spray.io IOBridge.

Trên sidenote: Akka futures are already in Scala 2.10.0scala.actorsis deprecated as of Scala 2.11.0. Tôi không chắc tại sao scala-redis lại sử dụng scala.actors mặc dù nó phụ thuộc vào Akka và Scala 2.10.0.

1

Có một khách hàng không chặn trả về tương lai có sẵn dưới dạng mô-đun finagle-redis. Ví dụ về cách sử dụng tại đây: https://github.com/twitter/finagle/blob/master/finagle-example/src/main/scala/com/twitter/finagle/example/redis/RedisClient.scala

Lưu ý: hiện tại nó trả về tương lai của Twitter. Bạn có thể sử dụng nó để hoàn thành Lời hứa cho tương lai Akka; một ví dụ về điều đó là trên ví dụ mã đầu tiên trong các trang trình bày cho cuộc thảo luận của NEScala của Blake: http://nescala.org/#t-8378162

Những người ở Twitter cho biết họ sẽ có tương lai Twitter thực hiện 2.10 Tính tương lai về tương thích API, khi họ chuyển sang 2,10.

Tác giả của scala-redis có vẻ quan tâm đến việc chuyển nó để sử dụng phun-io, trong trường hợp đó nó sẽ không bị chặn.

+0

Khá thú vị. Tôi đã [đánh giá việc sử dụng Redis từ Scala] (http://keithkim.org/blog/redis-clients-for-scala/) và tìm thấy mức tiêu thụ bộ nhớ cao sử dụng Akka Futures và/hoặc Akka IO. – karmakaze

1

Ngoài ra còn có scredis mà là một hoàn thành, non-blocking và lòng đam mê ứng dụng Scala Redis nhanh được xây dựng trên đầu trang của Akka IO. Nó được sử dụng rộng rãi trong sản xuất tại Livestream.

Các vấn đề liên quan