我正在尝试将多个元素推送到一个redis键。当前使用的是使用https://github.com/gomodule/redigo的redis池连接。
如果我尝试将一个数组放入rpush,则会推送一个连接了该数组的字符串。我如何才能推送单个元素
conn := Pool.Get() // A redigo redis pool
arr := []string{"a", "b", "c", "d"}
conn.Do("RPUSH","TEST","x","y") // This works
conn.Do("RPUSH", "TEST", arr) //This does not work发布于 2018-08-12 01:01:03
我没有这个库,但根据我在他们的文档中看到的,我想这应该是可行的:
conn.Do("RPUSH", arr...)...是一个参数运算符,它将切片的元素解包,并将它们作为单独的参数传递给一个可变函数,该函数与以下内容相同:
arr := []string{"TEST", "a", "b", "c", "d"}
conn.Do("RPUSH", "TEST", arr[0], arr[1], arr[2], arr[3])有关可变函数的更多信息,请参阅go in this very complete article
发布于 2018-08-12 08:37:18
构建一段参数,并使用这些参数调用变量函数:
args := []interface{"TEST")
for _, v := range arr {
args = append(args, v)
}
conn.Do("RPUSH", args...)Args帮助器用一行应用程序代码做同样的事情:
conn.Do("RPUSH", edis.Args{}.Add("TEST").AddFlat(arr)...)https://stackoverflow.com/questions/51801744
复制相似问题