2016-07-21 19 views
0

Ich entwickle mit Go lang und sehr neu dazu. Ich möchte den Befehl redired GEORADIUS verwenden und meine Ergebnisse einschließlich der Entfernung zurück erhalten.wie zu verwenden redis geo radius befehl go lang

Ich habe jetzt zwei Pakete radix.v2 und Redigo verwendet, um zu versuchen, Ergebnisse zu erhalten, aber hatte keine Freude. Ich habe keine Probleme mit einfachen Befehlen wie SET und GET.

Jede Hilfe wird sehr geschätzt.

Edit: Code hinzugefügt :-)

package main 

import (
    "fmt" 
    "github.com/mediocregopher/radix.v2/redis" 
    //"reflect" 
    "encoding/json" 
) 

var (
    client *redis.Client 
) 

type Facility struct { 
    Id string 
    Dist string 
} 

func main() { 
    client, err := redis.Dial("tcp", "192.168.99.100:6379") 
    if err != nil { 
    // handle err 
    } 

    surname, err := client.Cmd("GET", "surname").Str() 
    if err != nil { 
    // handle err 
    } 

    fmt.Println(surname) 

    reply, _ := client.Cmd("GEORADIUS", "venues", 50, 0, 25, "mi", "WITHDIST", "ASC").Array() 
    if err != nil { 
    fmt.Println(err) 
    } 

    //fmt.Println(reflect.TypeOf(reply)) 
    //fmt.Println(reply) 

    var facilities []Facility 

    for _, results := range reply { 
    facility, _ := results.Array() 

    id, _ := facility[0].Str() 
    dist, _ := facility[1].Str() 

    facilities = append(facilities, Facility{ 
     Id: id, 
     Dist: dist, 
    }) 
    } 

    //fmt.Println(facilities) 

    resp, _ := json.Marshal(facilities) 
    fmt.Fprintf(w, string(resp))  
} 

Prost Stephen

+0

die anzeigen Code, den Sie ausprobiert haben. –

+0

Ich arbeitete weiter daran und ich komme näher, bin mir aber nicht sicher, ob es der beste Weg ist, um die Daten zu bekommen, die ich brauche. –

+0

Was passiert, wenn Sie dieses Programm ausführen? Was ist die erwartete Ausgabe? –

Antwort

0

Sie den Code in das redis Paket aussehen kann.

die Datei commands.go hat alle Unterschriften

ein paar Unterschriften sind unter

GeoAdd (Schlüsselzeichenfolge, die Entfernung zu kennen ... * GeoLocation) * IntCmd GeoPos (Schlüsselzeichenfolge, die Mitglieder ... string) * GeoPosCmd GeoRadius (Schlüsselkette, Länge, Breite float64, Abfrage * GeoRadiusQuery) GeoRadiusByMember (Schlüssel, Mitglied Zeichenfolge, Abfrage * GeoRadiusQuery) GeoDist (Schlüsselzeichenfolge, member1, member2, Einheit string) * FloatCmd

+0

unten ein aktuelles Beispiel res ist, err: = client.GeoRadius ("Sizilien", 15, 37, & redis.GeoRadiusQuery { Radius: 200, Einheit: "km", WithGeoHash: false, WithCoord: true, WithDist: true, Anzahl: 10, Sortierung: "ASC", }). Ergebnis() – Abu