在使用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)...)