2016-07-21 7 views
0

나는 Go lang으로 개발 중이며 아주 새로 도입되었습니다. 나는 redis GEORADIUS 명령을 사용하여 거리를 포함한 결과를 얻고 싶습니다.redis geo radius 명령을 사용하는 방법

저는 이제 radix.v2와 redigo라는 두 개의 패키지를 사용하여 결과를 얻었지만 기쁨은 없었습니다. SET 및 GET과 같은 간단한 명령을 사용하여 문제가 없습니다.

도움이 될 것입니다.

편집 :

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

건배 스티븐

+0

가 표시 FloatCmd (키, 회원 문자열, 쿼리 * GeoRadiusQuery) GeoDist (키 문자열, 멤버 1, 멤버 2, 단위 문자열) 당신이 시도한 코드. –

+0

필자는 계속해서 작업을하고 있으며 필자는 점점 더 가까워지고 있지만 필자가 필요한 데이터를 얻는 가장 좋은 방법인지 확신 할 수는 없습니다. –

+0

이 프로그램을 실행하면 어떻게됩니까? 예상되는 결과는 무엇입니까? –

답변

0

당신은 레디 스 패키지의 코드를 볼 수 있습니다 :-) 추가 코드입니다.

파일 commands.go은 *이 GeoPos을 IntCmd

몇 서명

GeoAdd 아래에있는 모든 서명 (키 문자열, 위치 정보 ... * 인 GeoLocation) (키 문자열, 회원이 ... 문자열) * GeoPosCmd GeoRadius (키 문자열, 경도, 위도 float64, 쿼리 * GeoRadiusQuery) GeoRadiusByMember *

+0

아래의 실제 예 고해상도이며, ERR : = client.GeoRadius ("시실리", 15, 37, redis.GeoRadiusQuery { 반경 : 200, 단위 : "km" WithGeoHash : 거짓, WithCoord : true, WithDist : true, 개수 : 10, 정렬 : "ASC", ) 결과() – Abu