4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Sprayでscala-redisを使ってみる

Posted at

どうも
今回は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

今回もかなり雑な説明でしたが以上になります
では

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?