我和Go lang一起开发并且很新。我想使用redis GEORADIUS命令并取回我的结果,包括距离。
我现在使用了两个包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 :(得分:0)
您可以查看redis包中的代码。
文件commands.go具有所有签名
下面有几个签名
GeoAdd(键字符串,geoLocation ... * GeoLocation)* IntCmd GeoPos(密钥字符串,成员...字符串)* GeoPosCmd GeoRadius(key string,longitude,latitude float64,query * GeoRadiusQuery)GeoRadiusByMember(key,member string,query * GeoRadiusQuery) GeoDist(键字符串,member1,member2,单位字符串)* FloatCmd