使用github.com/go-redis/redis包里的GeoRadius函数
时间: 2023-09-26 09:09:35 浏览: 167
使用github操作redis1
Go语言中也可以使用github.com/go-redis/redis包里的GeoRadius函数来实现根据经纬度和半径获取地理位置信息的功能。该函数的参数与redis命令的参数基本一致,包括:key、longitude、latitude、radius、unit、以及可选参数(例如是否只返回距离信息、是否按距离排序等)。以下是一个简单的使用示例:
```go
import (
"github.com/go-redis/redis"
)
func main() {
//连接Redis数据库
client := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
Password: "", // no password set
DB: 0, // use default DB
})
//设置中心点经纬度
longitude := 116.397128
latitude := 39.916527
//设置半径和单位(单位可以是米、千米、英里等)
radius := redis.GeoRadiusQuery{
Radius: 1000,
Unit: "m",
}
//设置可选参数
options := redis.GeoRadiusCmd{
WithDist: true,
WithCoord: true,
Count: 10,
Sort: "ASC",
}
//调用GeoRadius函数并获取结果
results, err := client.GeoRadius("mylocations", longitude, latitude, &radius).WithGeoHash().WithDist().WithCoord().WithCount(10).SortAsc().Result()
if err != nil {
fmt.Println("GeoRadius error", err)
return
}
//遍历结果并输出
for _, result := range results {
locationName := result.Name
locationDist := result.Dist
locationCoord := result.GeoHash
fmt.Println(locationName, locationDist, locationCoord)
}
}
```
需要注意的是,使用该包时需要先在Go module中导入github.com/go-redis/redis包,然后在代码中引入该包,并通过NewClient函数创建一个Redis客户端。在调用GeoRadius函数时,需要使用GeoRadiusQuery和GeoRadiusCmd类型的变量来设置半径、单位以及可选参数等信息。最后的结果可以使用Result函数来获取,返回的是一个GeoLocation类型的slice。
阅读全文