GEORADIUSBYMEMBER

查询距离成员一定距离内的成员的地理空间索引,可选择存储结果。

语法

GEORADIUSBYMEMBER key member radius [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count [ANY]] [ASC | DESC] [STORE key | STOREDIST key]

引入版本:3.2.0

复杂度摘要:O(N+log(M)

[!NOTE] 此命令的行为在集群 Redis 环境中有所不同。请参阅 多键操作 页面了解更多信息。

该命令与 GEORADIUS 完全相同,唯一的区别是它不采用经度和纬度值作为要查询的区域的中心,而是采用有序集合表示的地理空间索引中已存在的成员的名称。

以指定成员的位置作为查询的中心。

请查看下面的示例和 GEORADIUS 文档,了解有关该命令及其选项的更多信息。

请注意,自 Redis 3.2.10 和 Redis 4.0.0 起,GEORADIUSBYMEMBER_RO 也可用,以提供可在副本中使用的只读命令。请参阅 GEORADIUS 页面了解更多信息。

必需参数

key

保存地理空间索引(有序集合)的键的名称。

member

以职位为搜索中心的会员。

radius

搜索圆的半径,单位由以下参数给出。

M | KM | FT | MI

radius 的单位:米 (M)、公里 (KM)、英尺 (FT) 或英里 (MI)。

可选参数

WITHCOORD

同时返回每个匹配项的经度和纬度。

WITHDIST

同时返回每个匹配项距中心的距离,单位与半径相同。

WITHHASH

还返回每个匹配项的原始 52 位 geohash 编码分数。

COUNT count [ANY]

最多返回count个匹配项。使用 ANY,一旦找到足够的匹配项,该命令就会返回 — 速度更快,但结果可能未排序。

ASC | DESC

按距中心的距离对结果进行排序:最近的优先 (ASC) 或最远的优先 (DESC)。

STORE key

将结果作为地理空间索引存储在 key 中,而不是返回它们。 STORE 和 STOREDIST 是互斥的。

STOREDIST key

将结果作为距中心距离的有序集合存储在 key 中,而不是返回它们。

示例

redis> GEOADD Sicily 13.583333 37.316667 "Agrigento"
(integer) 1
redis> GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania"
(integer) 2
redis> GEORADIUSBYMEMBER Sicily Agrigento 100 km
1) "Agrigento"
2) "Palermo"

Redis Software 与 Redis Cloud 兼容性

Redis
软件
Redis
Cloud
说明
✅ 标准
✅ 主动-主动
✅ 标准
✅ 主动-主动
从 Redis v6.2.0 开始已弃用。

返回值

RESP2

以下之一: * 如果未指定 WITH* 选项,则为匹配成员名称的 数组回复 * 如果指定了 WITHCOORD、WITHDIST 或 WITHHASH 选项,则该命令返回数组的 数组回复,其中每个子数组代表单个项目: * 距中心的距离为浮点数,采用与半径中指定的相同单位。 * Geohash 整数。 * 坐标为两个 x,y 数组(经度、纬度)。

RESP3

以下之一: * 如果未指定 WITH* 选项,则为匹配成员名称的 数组回复 * 如果指定了 WITHCOORD、WITHDIST 或 WITHHASH 选项,则该命令返回数组的 数组回复,其中每个子数组代表单个项目: * 距中心的距离为浮点数,采用与半径中指定的相同单位。 * Geohash 整数。 * 坐标为两个 x,y 数组(经度、纬度)。

资料来源:Redis 官方 GEORADIUSBYMEMBER 文档;中文内容参考 Redis 文档许可。