どうも
今回はSprayでRedisを使ってしまおうというお話
主にScalaのRedis Clientであるscala-redis
についてです
SprayとRedisの用意はしておいて下さい
scala-redisの使い方なのでsbt使ってればSprayじゃなくても大丈夫です
Redisは必須です
まずはbuild.sbtに以下のコードを追加しましょう
"net.debasishg" %% "redisclient" % "3.0"
IntelliJを使っている方であれば追加したタイミングで保存してもらえれば勝手にIDEAがやってくれます
さっきのコードを追加したらほぼ終わったようなものです
アプリのrootディレクトリで
sbt
>update
>console
と入力してREPLで一旦Redisを操作してみます
Redisは立ち上げといて下さい
redis-server
redis-cli
127.0.0.1:6379>
ScalaのREPLで
まずはscala-redisをインポートします
scala> import com.redis._
import com.redis._
次にRedisに接続します
scala> val red = new RedisClient("127.0.0.1", 6379)
red: com.redis.RedisClient = 127.0.0.1:6379
最後は値のセットと取得です
scala> red.set("scala", "最高")
res0: Boolean = true
scala> red.get("scala")
res1: Option[String] = Some(最高)
ここまで出来たら次はRedisの対話モードで値が保存されているか確認しましょう
ここで
get キー
127.0.0.1:6379> get scala
"\xe6\x9c\x80\xe9\xab\x98"
おっと、最高な形ではなくなってしまいました
セッションのキーを保存する予定なのでマルチバイトは考えないことにします笑
最高
がsaikoh
だったら
127.0.0.1:6379> get scala
"saikoh"
になっているだけです、最高です
次にSprayの中にも書いていきましょう
object Redis {
import com.redis._
val red = new RedisClient("127.0.0.1", 6379)
def set(key: String, value: String): Boolean = red.set(key,value)
def get(key: String): String = red.get(key).getOrElse("")
}
とりあえずこんなやつを書いて
Redisを立ち上げつつ
respondWithMediaType(`application/json`) { complete { s"""{"key scala": value is ${ Redis.get("scala") }"}""" } }
かっこ多杉内と思っている方ご安心下さい
大事なのはここだけです
Redis.get("scala")
Redisに保存してあるkeyがscalaというものの値を取得しています
上のレスポンスがブラウザ上でこうなります
{"key scala": value is 最高"}
どうですか
ScalaでRedisを使うのはかなり簡単でしたね
SlickでMySQLに繋ぐよりもはるかに単純で分かりやすいところが素敵です
参考
ここ見ればわかります
scala-redisのGitHubページ
Redisの公式にもクライアントはたくさん載ってあるので時間を見つけて他のクライアントもさわっていきたいと思います
http://redis.io/clients#scala
今回もかなり雑な説明でしたが以上になります
では