GEOSEARCH
语法
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]
- 可用版本
- Redis 开源版 6.2.0
- 时间复杂度
- O(N+log(M)),其中 N 是过滤器提供的形状周围网格对齐边界框区域中的元素数量,M 是形状内部的项目数量
- ACL 类别
-
@read
,@geo
,@slow
,
返回使用 GEOADD
填充地理空间信息的有序集合成员,这些成员位于给定形状指定的区域边界内。此命令扩展了 GEORADIUS
命令,因此除了在圆形区域内搜索外,它还支持在矩形区域内搜索。
此命令应替代已弃用的 GEORADIUS
和 GEORADIUSBYMEMBER
命令。
查询中心点由以下强制选项之一提供
FROMMEMBER
: 使用有序集合中给定现有<member>
的位置。FROMLONLAT
: 使用给定的<longitude>
和<latitude>
位置。
查询形状由以下强制选项之一提供
BYRADIUS
: 类似于GEORADIUS
,根据给定的<radius>
在圆形区域内搜索。BYBOX
: 在由<height>
和<width>
确定的轴对齐矩形内搜索。
命令可以使用以下选项选择性地返回额外信息
WITHDIST
: 还返回匹配项与指定中心点的距离。距离以与半径或高度和宽度参数相同的单位返回。WITHCOORD
: 还返回匹配项的经度和纬度。WITHHASH
: 还返回以 52 位无符号整数形式表示的原始 geohash 编码的有序集合分数。这仅对低级技巧或调试有用,对普通用户意义不大。
匹配项默认按未排序的方式返回。要对它们进行排序,请使用以下两个选项之一
ASC
: 按从近到远的顺序对返回项进行排序,相对于中心点。DESC
: 按从远到近的顺序对返回项进行排序,相对于中心点。
默认返回所有匹配项。要将结果限制为前 N 个匹配项,请使用 COUNT <count>
选项。使用 ANY
选项时,命令会在找到足够多的匹配项后立即返回。这意味着返回的结果可能不是离指定点最近的结果,但服务器生成它们所需的开销会显著减少。未提供 ANY
时,命令将执行与指定区域内匹配项数量成比例的操作并对其进行排序,因此即使只返回少量结果,使用非常小的 COUNT
选项查询非常大的区域也可能很慢。
示例
RESP2/RESP3 回复
以下之一
- 如果未指定
WITH*
选项,则返回匹配成员名称的数组回复 - 如果指定了
WITHCOORD
、WITHDIST
或WITHHASH
选项,命令将返回数组的数组回复,其中每个子数组代表一个单独的项- 匹配项与中心点的距离,以浮点数表示,单位与半径中指定的单位相同。
- Geohash 整数。
- 坐标以包含两个项目 x,y 的数组(经度、纬度)形式返回。
历史
- 从 Redis 7.0.0 版本开始:添加了对大写单位名称的支持。