2016-07-21 5 views
0

私はGo langを使って開発しており、とても新しくなっています。私はredis GEORADIUSコマンドを使用して距離を含めて結果を取り戻したいと思います。redis geo radiusコマンドの使い方

私はradix.v2とredigoの2つのパッケージを使用して結果を得ましたが、喜びはありませんでした。私はSETやGETのような簡単なコマンドを使っても問題はありません。

ご協力いただきますようお願い申し上げます。

編集:あなたはRedisのパッケージにコードを見ることができます追加コード:-)

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

を表示あなたが試したコード。 –

+0

私はそれに取り組んで、私は私が必要なデータを取得するための最善の方法であるかどうかは確かに近づいている。 –

+0

このプログラムを実行するとどうなりますか?期待される結果は何ですか? –

答えて

0

ファイルcommands.goは、*は GeoPosをIntCmd

数の署名が

GeoAddの下にあるすべての署名(キー文字列、ジオロケーション... *ジオロケーション)(キー文字列、メンバーを持っています...列)* GeoPosCmd GeoRadius(キー文字列、経度、緯度のfloat64、クエリ* GeoRadiusQuery)GeoRadiusByMember(鍵、メンバ列、クエリ* GeoRadiusQuery) GeoDist(キー文字列、MEMBER1、member2、単位列)* FloatCmd

+0

下記の実際の例では、 解像度で、ERR:= client.GeoRadius( "シチリア"、15、37、&redis.GeoRadiusQuery { 半径:200、 単位: "キロ"、 WithGeoHash:偽、結果、()が返されました。結果は()となりました。 – Abu

関連する問題