def semigroup: Semigroup[Seq[()

in storehaus-redis/src/main/scala/com/twitter/storehaus/redis/RedisSortedSetStore.scala [36:58]


  def semigroup: Semigroup[Seq[(Buf, Double)]] =
    implicitly[Semigroup[Seq[(Buf, Double)]]]

  /** Returns the whole set as a tuple of seq of (member, score).
   *  An empty set is represented as None. */
  override def get(k: Buf): Future[Option[Seq[(Buf, Double)]]] =
    client.zRange(k, 0L, -1L, true).map(
      _.left.toOption.map( _.asTuples).filter(_.nonEmpty)
    )

  /** Replaces or deletes the whole set. Setting the set effectivly results
   *  in a delete of the previous sets key and multiple calls to zAdd for each member. */
  override def put(kv: (Buf, Option[Seq[(Buf, Double)]])): Future[Unit] =
    kv match {
      case (set, Some(scorings)) =>
        client.dels(Seq(set)).flatMap { _ =>
          Future.collect(members.multiPut(scorings.map {
            case (member, score) => ((set, member), Some(score))
          }.toMap).values.toSeq).unit
        }
      case (set, None) =>
        client.dels(Seq(set)).unit
    }