Redis的GEORADIUS命令用于通过经纬度查询指定范围内的地理位置信息。下面详细介绍其作用、使用方法及实例说明。
GEORADIUS命令的作用
GEORADIUS命令用于在地理位置信息键空间中查找指定中心点周围指定半径范围内的地理位置数据。它会返回一个或多个地理位置对应的信息,如经度、纬度、名称等。
GEORADIUS命令的使用语法
GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]
参数说明:
- key 键名
- longitude、latitude 经纬度(中心点)
- radius 查询范围
- m|km|ft|mi 查询单位,分别表示米、千米、英尺、英里
- WITHCOORD 返回结果中包含被查询地理位置的经纬度
- WITHDIST 返回结果中包含被查询地理位置与中心点之间的距离
- WITHHASH 返回结果中包含被查询地理位置对应的geohash整数
- COUNT count 返回结果中仅包含前N个地理位置数据
- ASC|DESC 返回结果中地理距离的排序方式,默认为升序(ASC)
- STORE key 将查询结果存入新的有序集合中,命名为key
- STOREDIST key 将查询结果存入新的有序集合中,命名为key,并将对应地理距离用浮点数记录
GEORADIUS命令的使用方法
下面举例说明如何使用GEORADIUS命令。
示例一:查询指定范围内的地理位置
假设在Redis数据库中,已经存储下了多个地理位置信息,其键名为"cities",其中子键为不同城市名称,存储有其经纬度(如下所示)。
> GEOADD cities 116.405285 39.904989 "Beijing"
> GEOADD cities 121.473701 31.230416 "Shanghai"
> GEOADD cities 114.066112 22.548092 "Hong Kong"
> GEOADD cities 113.264434 23.129162 "Guangzhou"
现在,我们想要查询100公里内距离上海市中心点最近的城市名称及其距离。使用GEORADIUS命令,其查询语句如下:
> GEORADIUS cities 121.473701 31.230416 100 km WITHDIST
运行结果如下:
1) 1) "Shanghai"
2) "0.0000"
2) 1) "Hangzhou"
2) "157.9801"
结果显示,查询结果为上海和距离上海最近的杭州(距离157.98公里)。
示例二:存储查询结果到新的有序集合
假设现在我想要查询所有距离上海30公里以内的城市,并且将这些城市名称存储到一个新的有序集合中命名为"cities_within_30km"。使用GEORADIUS命令,其查询语句如下:
> GEORADIUS cities 121.473701 31.230416 30 km STORE cities_within_30km
查询结果为空,这是因为查询结果已经被存储到了"cities_within_30km"的有序集合中。可以用ZRANGE命令查看该集合的内容:
> ZRANGE cities_within_30km 0 -1
运行结果如下:
1) "Shanghai"
结果显示,查询结果为只有上海一个城市(因为距离上海30公里以内的城市只有上海一个),并且已被存储到了"cities_within_30km"的有序集合中。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Redis GEORADIUS命令 - Python技术站