GEOSEARCH
Syntax
GEOSEARCH key <FROMMEMBER member | FROMLONLAT longitude latitude> <BYRADIUS radius <M | KM | FT | MI> | BYBOX width height <M | KM | FT | MI>> [ASC | DESC] [COUNT count [ANY]] [WITHCOORD] [WITHDIST] [WITHHASH]
- Available since:
- 6.2.0
- Time complexity:
- O(N+log(M)) where N is the number of elements in the grid-aligned bounding box area around the shape provided as the filter and M is the number of items inside the shape
- ACL categories:
-
@read
,@geo
,@slow
,
返回使用GEOADD
填充地理空间信息的排序集合的成员,这些成员位于给定形状指定的区域边界内。此命令扩展了GEORADIUS
命令,因此除了在圆形区域内搜索外,还支持在矩形区域内搜索。
此命令应替代已弃用的GEORADIUS
和GEORADIUSBYMEMBER
命令。
查询的中心点由以下必选项之一提供:
FROMMEMBER
: 使用给定现有
在排序集合中的位置。FROMLONLAT
: 使用给定的
和
位置。
查询的形状由以下这些必选项之一提供:
BYRADIUS
: 类似于GEORADIUS
,根据给定的
在圆形区域内搜索。BYBOX
: 在由
和
确定的轴对齐矩形内搜索。
该命令可以选择性地使用以下选项返回附加信息:
WITHDIST
: 同时返回返回项与指定中心点的距离。距离的单位与半径或高度和宽度参数指定的单位相同。WITHCOORD
: 同时返回匹配项的经度和纬度。WITHHASH
: 同时返回项目的原始地理哈希编码的排序集分数,以52位无符号整数的形式。这仅对低级黑客或调试有用,对普通用户来说几乎没有兴趣。
默认情况下,匹配的项目返回时未排序。要对它们进行排序,请使用以下两种选项之一:
ASC
: 按从最近到最远的顺序返回项目,相对于中心点。DESC
: 按从最远到最近的顺序对返回的项目进行排序,相对于中心点。
默认情况下,所有匹配的项目都会被返回。要限制结果为前N个匹配项目,请使用COUNT
选项。
当使用ANY
选项时,命令在找到足够匹配项后立即返回。这意味着返回的结果可能不是最接近指定点的那些,但服务器生成它们所投入的努力显著减少。
当未提供ANY
时,命令将执行与匹配指定区域的项目数量成比例的努力,并对它们进行排序,
因此,即使只返回少量结果,使用非常小的COUNT
选项查询非常大的区域可能会很慢。
示例
RESP2/RESP3 回复
以下之一:
- 如果没有指定
WITH*
选项,则返回匹配成员名称的数组回复 - 如果指定了
WITHCOORD
、WITHDIST
或WITHHASH
选项,命令将返回一个数组回复,其中每个子数组代表一个单独的项目:- 从中心到该点的距离,以浮点数表示,单位与半径中指定的单位相同。
- Geohash整数。
- 坐标作为一个包含两个元素的x,y数组(经度,纬度)。
历史
- 从 Redis 7.0.0 版本开始:增加了对大写单位名称的支持。