Geo 地理位置
GEO
Geolocation 简写形式,表示一个地址位置,存储地理位置的数据类型,在 3.2 版本增加这种数据类型
底层是 zset 实现,所以删除成员要用 zrem 命令
-
GEOADD:GEOADD key longitude latitude member [longitude latitude member ...]
- 添加一个 GEO 信息
- 一个 key 下多个成员
-
GEOPOS:GEOPOS key member [member ...]
- 返回所有指定名称(member)的位置(经度和纬度)
- 如果不存在某个 member,返回 null
-
GEODIST:GEODIST key member1 member2 [m|km|ft|mi]
- 返回两个指定成员之间的距离
- 单位分别是 米、千米、英尺、英里
-
GEORADIUS:GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC]
指定圆心、半径,找到该圆内的所有 member,6.2 以后被废弃
- radius: 搜索半径,可以使用单位(如
m
为米,km
为公里) - WITHCOORD: 返回地理坐标
- WITHDIST:返回距离
- WITHHASH:返回位置的哈希值
- COUNT:限定返回的记录数
- ASC|DESC: 指定排序顺序(升序或降序)
- radius: 搜索半径,可以使用单位(如
-
GEORADIUSBYMEMBER:同 GEORADIUS 命令,圆心可以使用一个成员的位置
-
GEOSEARCH:GEOSEARCH key [FROMMEMBER member] [FROMLONLAT longitude latitude] [BYRADIUS radius m|km|ft|mi] [BYBOX width height m|km|ft|mi] [COUNT count] [WITHCOORD] [WITHDIST] [WITHHASH] [ASC|DESC]
效果和 GEORADIUS 类似,这个可以按矩形来搜,6.2 新增
- FROMMEMBER member,FROMLONLAT longitude latitude:目标点位是成员还是经纬度,只能二选一
- BYRADIUS radius m|km|ft|mi,BYBOX width height m|km|ft|mi:搜索半径还是按矩形搜,如果是圆指定半径,如果是矩形指定长宽
- radius: 搜索半径,可以使用单位(如
m
为米,km
为公里) - WITHCOORD: 返回地理坐标
- WITHDIST:返回距离
- WITHHASH:返回位置的哈希值
- SORTBY sortby: 按照指定字段排序(如
distance
) - ASC|DESC: 指定排序顺序(升序或降序)
- COUNT:限定返回的记录数
-
GEOSEARCHSTORE:和 GEOSEARCH 功能一致,可以把结果再次存储到一个指定的 key,6.2 新增
# 添加一个 train,保存成都东南西火车站三个位置
GEOADD train 104.147642 30.634825 cdd 104.075079 30.612243 cdn 103.985117 30.690621 cdx
# train 增加一个成员(如果 train 不存在就创建,存在就新增成员)
GEOADD train 104.079854 30.702682 cdb
# 查询 train 中 cdd cdn cda 三个成员的位置(没有 cda )
127.0.0.1:0>GEOPOS train cdd cdn cda
1) 1) "104.14764136075973511"
2) "30.63482623377577596"
2) 1) "104.0750768780708313"
2) "30.61224186824606619"
3) null
# 查询两个成员之间的距离,默认单位是 m
127.0.0.1:0>GEODIST train cdd cdn
"7385.7293"
127.0.0.1:0>GEODIST train cdd cdn km
"7.3857"
# 以成都东站坐标为原点,查询半径100公里范围内的成员,并带上距离原点的距离
127.0.0.1:0>GEORADIUS train 104.14764136075973511 30.63482623377577596 100 km WITHDIST
1) 1) "cdn"
2) "7.3857"
2) 1) "cdd"
2) "0.0000"
3) 1) "cdb"
2) "9.9508"
4) 1) "cdx"
2) "16.7423"
# 以成都南站为起点,在长 100km 宽 50km 的矩形范围内搜索,搜索结果距离从近到远排列
127.0.0.1:0>GEOSEARCH train FROMMEMBER cdn BYBOX 100 50 km COUNT 10 ASC WITHDIST WITHCOORD
1) 1) "cdn"
2) "0.0000"
3) 1) "104.0750768780708313"
2) "30.61224186824606619"
2) 1) "cdd"
2) "7.3857"
3) 1) "104.14764136075973511"
2) "30.63482623377577596"
3) 1) "cdb"
2) "10.0699"
3) 1) "104.07985657453536987"
2) "30.70268325393244169"
4) 1) "cdx"
2) "12.2515"
3) 1) "103.98511558771133423"
2) "30.6906205159351444"
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具