小编ipa*_*avl的帖子

是否需要调用Future方法参数"by-name"?

我使用http4s,Argonaut和Slick在Redis中为Scala应用程序缓存JSON响应,并且想要确认它是否正常工作.想法是如果key找不到Redis ,则调用给定的fallback方法从原始源(MySQL)获取数据并将其缓存以备将来请求,否则跳过MySQL:

/** Get from MySQL */
def getThingsFromDatabase(matchingId: Int): Future[Seq[Thing]] = {
  println("getThingsFromDatabase")
  val query = things.filter(_.fieldId === matchingId)
  db.run(query.result)
}

/** Get from Redis, else MySQL via `fallback` */
def getThingsFromRedisOrDatabase(key: String,
                                 fallback: Future[Seq[Thing]]):
                                 Future[argonaut.Json] = {
  val stored = redis.get(key)
  stored match {
    // Data exists, return from redis
    case Some(s) => {
      Parse.parse(s) match {          // convert string to Json
        case Right(r) => Future { r } // Json => Future[argonaut.Json]
        case …
Run Code Online (Sandbox Code Playgroud)

scala future

3
推荐指数
1
解决办法
312
查看次数

标签 统计

future ×1

scala ×1