in storehaus-redis/src/main/scala/com/twitter/storehaus/redis/RedisStore.scala [61:81]
override def get(k: Buf): Future[Option[Buf]] =
client.get(k)
override def multiGet[K1 <: Buf](
ks: Set[K1]): Map[K1, Future[Option[Buf]]] = {
val redisResult: Future[Map[K1, Future[Option[Buf]]]] = {
// results are expected in the same order as keys
// keys w/o mapped results are considered exceptional
val keys = ks.toIndexedSeq.view
client.mGet(keys).map { result =>
val zipped = keys.zip(result).map {
case (k, v) => k -> Future.value(v)
}.toMap
zipped ++ keys.filterNot(zipped.isDefinedAt).map { k =>
k -> Future.exception(new MissingValueException(k))
}
}
}
FutureOps.liftValues(ks, redisResult, { (k: K1) => Future.value(Future.None) })
.mapValues { _.flatten }
}