ちょっとはまったのでメモ。
scalaのRedisクライアントには何種類か有ります。
当初scala-redisを使っていたのですが、Pub/Subする際に、内部的にスレッドを生成しているようで、大量のPub/Subを作成したい場合(数千)にはOutOfMemoryで落ちてしまいます。
そこでActorモデルのbrandoを使用してみました。
ネット上にはほとんど情報もなくちょっとはまってしまったので記録しておきます
https://github.com/chrisdinn/brando
こちらからダウンロードしてsbt packageでJarを作成します。
あとakkaが必要なので2.3をダウンロードしておきます。
いろいろと試行錯誤し以下のコードでとれました
Pub/Subとかこれから確かめます
package brandoTest import akka.actor._ import akka.util._ import akka.pattern.ask import scala.concurrent._ import brando._ object Main { def main(args: Array[String]): Unit = { implicit val timeout= Timeout(5000) val system=ActorSystem("brando") val brando = system.actorOf(Brando("localhost", 6379,None,None)) val future=brando.ask (Request("GET","key")).mapTo[Some[ByteString]] val res=Await.result(future,timeout.duration) res match{ case Some(x)=>println(x.decodeString("UTF-8")) } } }