现在我的代码是这样的:
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?
答案 0 :(得分:3)
查看来源,您可以看到sadd
在https://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
,因此每当您将此方法与空列表一起使用时,您将获得异常,这是合理的,因为您无法仅添加密钥。