与Redigo的GEOADD命令

时间:2017-01-27 17:17:40

标签: go redis redigo

这是我正在尝试的,使用Redigo(“github.com/garyburd/redigo/redis”):

insertPos := []string{"3.361389", "38.115556", "12"}
if _, err := conn.Do("GEOADD", redis.Args{}.Add("geoIndex").AddFlat(&insertPos)...); err != nil {
    log.Print(err)
} 
==> "ERR wrong number of arguments for 'geoadd' command"

使用redis-cli时可以正常工作:

GEOADD geoIndex  3.361389  38.115556  12
==> (integer) 1

其他命令工作正常,这是我第一次使用GEOADD,它显然似乎没有像我期望的那样工作。 有人有想法吗?

1 个答案:

答案 0 :(得分:1)

调用此API的最简单方法是:

_, err := conn.Do("GEOADD", "geoIndex", "3.361389", "38.115556", "12")

您还可以传递数字值:

_, err := conn.Do("GEOADD", "geoIndex", 3.361389, 38.115556, 12)

如果你想将命令拼凑在一起,那么将切片传递给AddFlat,而不是指向切片的指针:

insertPos := []string{"3.361389", "38.115556", "12"}
_, err := conn.Do("GEOADD", redis.Args{}.Add("geoIndex").AddFlat(insertPos)...)