如何使用scala redisClient

时间:2015-11-25 08:33:26

标签: scala redis

现在我的代码是这样的:

val elems  = List("1","2","3")
for(elem <- elems){
  redis.sadd("elems",elem)
}

是否有任何方法可以对多个元素进行处理,例如python&#39; s api。

How to use sadd with multiple elements in Redis using Python API?

我使用https://github.com/debasishg/scala-redis

1 个答案:

答案 0 :(得分:3)

查看来源,您可以看到saddhttps://github.com/debasishg/scala-redis/blob/master/src/main/scala/com/redis/SetOperations.scala定义为:{/ p>

def sadd(key: Any, value: Any, values: Any*)(implicit format: Format): Option[Long] =
    send("SADD", List(key, value) ::: values.toList)(asLong)

如果你手动列出元素,那就好了。

redis.sadd("elems", "1", "2", "3")

完成禁止使用空列表。你可以用这个api做什么

val elems  = List("1","2","3")
redis.sadd("elems", elems.head, elems.tail: _*)

你也可以通过隐式转换

添加一个适合RedisClient类的方法
implicit class RichRedis(self: RedisClient) {
    def saddseq(key: Any, values: Seq[Any])(implicit format: Format): Option[Long] =
        self.sadd(key, values.head, values.tail: _*)
}

然后你可以这样做:

val elems  = List("1","2","3")
redis.saddseq("elems", elems)

请注意,您无法重载sadd它需要一个不同的名称。

请记住,您无法在空列表中调用head,因此每当您将此方法与空列表一起使用时,您将获得异常,这是合理的,因为您无法仅添加密钥。