redigo批量lpush/rpush、批量zrem

在使用redigo库时,想批量向redis list中批量push,发现像下面方式传入[]string是不行的,在这里记录一下。

keys := []string{"nn", "mm"}
_, err = con.Do("lpush", queueName, keys)

直接传slice发现结果是整个slice被拼在一起放到一起了:

后来google了下,发现需要将slice用三个点(...)打散后传入,类似于这种:

args := []interface{}{queueName}
for _, val := range keys {
    args = append(args, val)
}
_, err = con.Do("lpush", args...)

或者一种更简单的方式:

_, err = con.Do("lpush", redis.Args{}.Add(queueName).AddFlat(keys)...)

结果:

同理zrem批量删除redis zset中的值时,也需要使用这种方式:

_, err = con.Do("zrem", redis.Args{}.Add(ZsetName).AddFlat(Keys)...)