2017-01-27 1 views
1

Hier ist, was ich versuche, mit Redigo ("github.com/garyburd/redigo/redis"):GEOADD Befehl mit Redigo

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" 

Während mit der redis-cli das funktioniert gut:

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

Andere Befehle funktioniert gut, das ist nur das erste Mal, dass ich GEOADD verwenden muss und es scheint eindeutig nicht zu funktionieren, wie ich es erwarte. Hat jemand eine Idee?

Antwort

1

Der einfachste Weg, um diese API aufrufen ist:

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

Sie können auch Zahlenwerte übergeben:

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

Wenn Sie den Befehl zusammen, dann übergeben Sie die Scheibe zu AddFlat Stück wollen , kein Zeiger auf die Scheibe:

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

Sie haben Recht, Ihre Vorschläge waren meine ersten Versuche, aber ich habe nur ein minimales Beispiel und es funktioniert gut. Das Problem kam in der Tat von einem anderen redis Aufruf direkt nach diesem, der in dem Fall scheiterte, der dieser vorbeiging ... Danke – Err0r500