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命令,因此除了在圆形区域内搜索外,还支持在矩形区域内搜索。

此命令应替代已弃用的GEORADIUSGEORADIUSBYMEMBER命令。

查询的中心点由以下必选项之一提供:

  • FROMMEMBER: 使用给定现有在排序集合中的位置。
  • FROMLONLAT: 使用给定的 位置。

查询的形状由以下这些必选项之一提供:

  • BYRADIUS: 类似于 GEORADIUS,根据给定的 在圆形区域内搜索。
  • BYBOX: 在由确定的轴对齐矩形内搜索。

该命令可以选择性地使用以下选项返回附加信息:

  • WITHDIST: 同时返回返回项与指定中心点的距离。距离的单位与半径或高度和宽度参数指定的单位相同。
  • WITHCOORD: 同时返回匹配项的经度和纬度。
  • WITHHASH: 同时返回项目的原始地理哈希编码的排序集分数,以52位无符号整数的形式。这仅对低级黑客或调试有用,对普通用户来说几乎没有兴趣。

默认情况下,匹配的项目返回时未排序。要对它们进行排序,请使用以下两种选项之一:

  • ASC: 按从最近到最远的顺序返回项目,相对于中心点。
  • DESC: 按从最远到最近的顺序对返回的项目进行排序,相对于中心点。

默认情况下,所有匹配的项目都会被返回。要限制结果为前N个匹配项目,请使用COUNT 选项。 当使用ANY选项时,命令在找到足够匹配项后立即返回。这意味着返回的结果可能不是最接近指定点的那些,但服务器生成它们所投入的努力显著减少。 当未提供ANY时,命令将执行与匹配指定区域的项目数量成比例的努力,并对它们进行排序, 因此,即使只返回少量结果,使用非常小的COUNT选项查询非常大的区域可能会很慢。

示例

GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania" GEOADD Sicily 12.758489 38.788135 "edge1" 17.241510 38.788135 "edge2" GEOSEARCH Sicily FROMLONLAT 15 37 BYRADIUS 200 km ASC GEOSEARCH Sicily FROMLONLAT 15 37 BYBOX 400 400 km ASC WITHCOORD WITHDIST

RESP2/RESP3 回复

以下之一:

  • 如果没有指定WITH*选项,则返回匹配成员名称的数组回复
  • 如果指定了WITHCOORDWITHDISTWITHHASH选项,命令将返回一个数组回复,其中每个子数组代表一个单独的项目:
    • 从中心到该点的距离,以浮点数表示,单位与半径中指定的单位相同。
    • Geohash整数。
    • 坐标作为一个包含两个元素的x,y数组(经度,纬度)。

历史

  • 从 Redis 7.0.0 版本开始:增加了对大写单位名称的支持。
RATE THIS PAGE
Back to top ↑