GEORADIUS(已弃用)
从 Redis 版本 6.2.0 开始,此命令被视为已弃用。
它可以替换为GEOSEARCH
和GEOSEARCHSTORE
使用BYRADIUS
参数。
GEORADIUS key longitude latitude radius <M | KM | FT | MI> [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count [ANY]] [ASC | DESC] [STORE key | STOREDIST key]
- 从以下位置开始可用:
- 3.2.0
- 时间复杂度:
- O(N+log(M)),其中 N 是由中心和半径分隔的圆形区域的边界框内的元素数,M 是索引内的项数。
- ACL 类别:
-
@write
,@geo
,@slow
,
使用 返回填充有地理空间信息的有序集的成员GEOADD
,它们位于使用中心位置和距中心的最大距离 (半径) 指定的区域的边界内。
本手册页还介绍了GEORADIUS_RO
和GEORADIUSBYMEMBER_RO
变体(有关更多信息,请参阅以下部分)。
此命令的常见用例是检索指定点附近的地理空间项目,该点的距离不超过给定的米数(或其他单位)。例如,这允许建议应用程序在附近位置的移动用户。
半径以下列单位之一指定:
- m 表示米。
- 公里代表公里。
- 英里的 mi 的 m.
- ft 代表脚。
该命令可选择使用以下选项返回其他信息:
WITHDIST
:同时返回返回的项目与指定中心的距离。返回距离的单位与指定为命令的 radius 参数的单位相同。WITHCOORD
:同时返回匹配项目的经度、纬度坐标。WITHHASH
:还返回项目的原始 geohash 编码的排序集分数,格式为 52 位无符号整数。这仅对低级 hack 或调试有用,否则对普通用户来说兴趣不大。
命令 default 是返回未排序的项目。可以使用以下两个选项调用两种不同的排序方法:
ASC
:相对于中心,从最近到最远的顺序对返回的项目进行排序。DESC
:相对于中心,从最远到最近对返回的项目进行排序。
默认情况下,将返回所有匹配的项。可以使用计数<count>
选择。
什么时候ANY
,该命令将在找到足够匹配项后立即返回,
因此,结果可能不是最接近指定点的结果,但另一方面,服务器投入的工作量要低得多。
什么时候ANY
未提供,则该命令将执行与与指定区域匹配的项目数量成比例的工作并对其进行排序。
因此,要查询非常大的区域,并且COUNT
选项可能会很慢,即使只返回几个结果。
默认情况下,该命令将项目返回给客户端。可以使用以下选项之一存储结果:
STORE
:将项目存储在填充了其地理空间信息的排序集中。STOREDIST
:将项目存储在一个排序集中,该集合以浮点数的形式填充它们与中心的距离,以半径中指定的相同单位。
只读变体
因为GEORADIUS
和GEORADIUSBYMEMBER
有一个STORE
和STOREDIST
选项,它们在技术上被标记为在 Redis 命令表中写入命令。因此,只读副本会标记它们,而 Redis Cluster 副本会将它们重定向到主实例,即使连接处于只读模式(请参阅READONLY
命令)。
至少对于 Redis 4.0 来说,打破与过去的兼容性被考虑但被拒绝了,因此添加了命令的两个只读变体。它们与原始命令完全相同,但拒绝STORE
和STOREDIST
选项。这两个变体称为GEORADIUS_RO
和GEORADIUSBYMEMBER_RO
,并且可以安全地在副本中使用。
例子
RESP2/RESP3 回复
以下选项之一:
- 如果没有
WITH*
选项,则匹配成员名称的 Array 回复 - 如果
WITHCOORD
,WITHDIST
或WITHHASH
options 时,该命令返回数组的 Array 回复,其中每个子数组代表一个项目:- 与中心的距离,以浮点数表示,单位与半径中指定的单位相同。
- Geohash 整数。
- 坐标为两个项 x,y 数组 (longitude,latitude)。
例如,命令GEORADIUS Sicily 15 37 200 km WITHCOORD WITHDIST
将按以下方式返回每个项目:
["Palermo","190.4424",["13.361389338970184","38.115556395496299"]]
历史
- 从 Redis 版本 6.2.0 开始:添加了
ANY
选项COUNT
. - 从 Redis 版本 7.0.0 开始:添加了对大写单位名称的支持。