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 文档许可。