gomodule / redigo我如何按多个键进行Redis

时间:2018-08-11 16:40:12

标签: go redis redigo

我正在尝试将多个元素推送到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

2 个答案:

答案 0 :(得分:1)

我没有该库,但是从我在他们的文档中看到的内容来看,我认为这应该可行:

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中找到有关可变参量的更多信息

答案 1 :(得分:0)

构建一部分参数,并使用这些参数调用可变参数函数:

 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)...)