GEOSEARCHSTORE
查询框或圆区域内成员的地理空间索引,可以选择存储结果。
语法
GEOSEARCHSTORE destination source | BYBOX width height > [ASC | DESC] [COUNT count [ANY]] [STOREDIST]
引入版本:6.2.0
复杂度摘要:O(N+log(M)
[!NOTE] 此命令的行为在集群 Redis 环境中有所不同。请参阅 多键操作 页面了解更多信息。
该命令与 GEOSEARCH 类似,但它将结果存储在提供的 destination 中。
此命令替换现已弃用的 GEORADIUS 和 GEORADIUSBYMEMBER。
默认情况下,它将结果及其地理空间信息存储在 destination 有序集合中。
使用 STOREDIST 选项时,该命令将项目存储在一个有序集合中,其中填充了它们与圆或框中心的距离(作为浮点数),并采用为该形状指定的相同单位。
必需参数
destination
存储结果的键。
source
要搜索的地理空间索引键。
查询中心点:
FROMMEMBER member
以现有member的位置为搜索中心。与 FROMLONLAT 互斥。
FROMLONLAT longitude latitude
使用给定的坐标作为搜索的中心。与 FROMMEMBER 互斥。
查询形状选项:
BYRADIUS radius M | KM | FT | MI
以指定单位在给定radius 的圆内搜索。与 BYBOX 互斥。
BYBOX width height M | KM | FT | MI
在指定单位的给定 width 和 height 的轴对齐框中搜索。与 BYRADIUS 互斥。
可选参数
ASC | DESC
按距中心的距离对结果进行排序:最近的优先 (ASC) 或最远的优先 (DESC)。
COUNT count [ANY]
最多返回count个匹配项。使用 ANY,一旦找到足够的匹配项,该命令就会返回 — 速度更快,但结果可能未排序。
STOREDIST
将距中心的距离存储为有序集合分数,而不是 geohash 编码的位置。
示例
redis> GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania"
(integer) 2
redis> GEOADD Sicily 12.758489 38.788135 "edge1" 17.241510 38.788135 "edge2"
(integer) 2
redis> GEOSEARCHSTORE key1 Sicily FROMLONLAT 15 37 BYBOX 400 400 km ASC COUNT 3
(integer) 3
redis> GEOSEARCH key1 FROMLONLAT 15 37 BYBOX 400 400 km ASC WITHCOORD WITHDIST WITHHASH
1) 1) "Catania"
2) "56.4413"
3) (integer) 3479447370796909
4) 1) "15.087267458438873"
2) "37.50266842333162"
2) 1) "Palermo"
2) "190.4424"
3) (integer) 3479099956230698
4) 1) "13.361389338970184"
2) "38.1155563954963"
3) 1) "edge2"
2) "279.7403"
3) (integer) 3481342659049484
4) 1) "17.241510450839996"
2) "38.78813451624225"
redis> GEOSEARCHSTORE key2 Sicily FROMLONLAT 15 37 BYBOX 400 400 km ASC COUNT 3 STOREDIST
(integer) 3
redis> ZRANGE key2 0 -1 WITHSCORES
1) "Catania"
2) "56.4412578701582"
3) "Palermo"
4) "190.44242984775784"
5) "edge2"
6) "279.7403417843143"
Redis Software 与 Redis Cloud 兼容性
| Redis 软件 |
Redis Cloud |
说明 |
|---|---|---|
| ✅ 标准 |
✅ 标准 |
返回值
RESP2
整数回复:结果集中的元素数量
RESP3
整数回复:结果集中的元素数量
资料来源:Redis 官方 GEOSEARCHSTORE 文档;中文内容参考 Redis 文档许可。