in storehaus-redis/src/main/scala/com/twitter/storehaus/redis/RedisSortedSetStore.scala [153:172]
override def multiPut[K1 <: (Buf, Buf)](
kv: Map[K1, Option[Double]]): Map[K1, Future[Unit]] = {
// we are exploiting redis's built-in support for removals (zRem)
// by partioning deletions and updates into 2 maps indexed by the first
// component of the composite key, the key of the set
val (del, persist) =
multiPutPartitioned[Buf, Buf, K1, Double, Buf](kv)(_._1)
del.flatMap {
case (k, members) =>
val value = client.zRem(k, members.map(_._1._2))
members.map(_._1 -> value.unit)
} ++ persist.flatMap {
case (k, members) =>
members.map {
case (k1, score) =>
// a per-InnerK operation
k1 -> client.zAdd(k, score.get, k1._2).unit
}
}
}