首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用scala redisClient添加多个元素

如何使用scala redisClient添加多个元素
EN

Stack Overflow用户
提问于 2015-11-25 08:33:26
回答 1查看 903关注 0票数 1

现在我的代码如下:

代码语言:javascript
复制
val elems  = List("1","2","3")
for(elem <- elems){
  redis.sadd("elems",elem)
}

是否有任何方法来添加多个元素,如python的api。

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-25 08:48:44

从源代码中可以看到,sadd在这里被定义为:https://github.com/debasishg/scala-redis/blob/master/src/main/scala/com/redis/SetOperations.scala

代码语言:javascript
复制
def sadd(key: Any, value: Any, values: Any*)(implicit format: Format): Option[Long] =
    send("SADD", List(key, value) ::: values.toList)(asLong)

如果您手动列出元素,这是很好的。

代码语言:javascript
复制
redis.sadd("elems", "1", "2", "3")

这样做是为了不允许使用空列表。使用这个api可以做的事情是

代码语言:javascript
复制
val elems  = List("1","2","3")
redis.sadd("elems", elems.head, elems.tail: _*)

您还可以通过隐式转换将适合您的方法添加到RedisClient类中。

代码语言:javascript
复制
implicit class RichRedis(self: RedisClient) {
    def saddseq(key: Any, values: Seq[Any])(implicit format: Format): Option[Long] =
        self.sadd(key, values.head, values.tail: _*)
}

然后你就可以:

代码语言:javascript
复制
val elems  = List("1","2","3")
redis.saddseq("elems", elems)

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

请记住,您不能对空列表调用head,因此,每当您对空列表使用此方法时,就会得到异常,考虑到不能只添加一个键,这是合理的。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33911710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档