GEODIST key member1 member2 [unit]
上述指令可以返回两个给定位置之间的距离,unit是距离单位,可选项,默认为m,枚举如下:
- m:表示单位为米
- km:表示单位为千米
- mi:表示单位为英里
- ft:表示单位为英尺

文章插图
redis> GEODIST food:location 东北饺子馆 兰州拉面"6184.15156"
3.4GEORADIUS 获取给定经纬度的固定距离内的位置信息很多种应用场景是我登录了外卖APP,也确定了我自己所在的位置(即已确知经纬),需要获取一定距离范围内(比如10公里),所有的餐饮店 。这时候就使用到了 GEO 提供的 GEORADIUS指令了:根据输入的经纬度,查找以这个经纬度为中心的一定距离内的其他位置信息 。GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [ASC|DESC] [COUNT count]
key longitude latitude
: 是前置条件,给定的经纬度信息,以及我要搜索的keyradius
:距离半径,指的搜索的范围m|km|ft|mi
: 为给定的距离单位,有 米、千米、英尺、英里4种[WITHCOORD] [WITHDIST] [WITHHASH]
: 为返回的信息类型- WITHDIST: 在返回位置元素的同时,将位置元素与中心之间的距离也一并返回 。距离的单位和用户给定的范围单位保持一致 。
- WITHCOORD: 将位置元素的经度和维度也一并返回 。
- WITHHASH: 以 52 位有符号整数的形式,返回位置元素经过原始 geohash 编码的有序集合分值 。这个选项主要用于底层应用或者调试,实际中的作用并不大 。
ASC|DESC
:可选参数,按照距离升序或者降序排列,即 由近到远(asc) 还是 由远到近(desc)COUNT count
:取数数量,避免获取到太多的信息,返回太多信息
【Redis系列9:Geo 类型赋能亿级地图位置计算】
redis> GEORADIUS food:location 115.791331 39.512000310 km WITHDISTASC COUNT 100"东北饺子馆"3.3421"兰州拉面"9.4571
下图的绿色区域在固定半径(红圈)中搜索到了特定的几个目标位置:1、2、5、9、10 。
文章插图
3.5GEORADIUSBYMEMBER 按照位置名称获取与
GEORADIUS
的区别是 GEORADIUSBYMEMBER
的中心点是由给定的位置元素决定的,而不是像 GEORADIUS 那样,通过传入经度和纬度来决定中心点 。所以如下,已知兰州拉面和东北饺子馆的距离是6.1公里,根据兰州拉面获取10公里范围内的距离的美食店,可以获取到东北饺子馆和自己的位置:redis> GEORADIUSBYMEMBER food:location "兰州拉面" 100 km WITHDIST"东北饺子馆"6.09127"兰州拉面"0
3.6 ZREM 删除关闭的店铺redis>ZREM food:location "兰州拉面"(integer) 1
4 总结- GEO 使用了 Sorted Set 集合类型,并通过 GeoHash 编码方法实现了经纬度到 Sorted Set 中元素权重分数的转换,涵盖两个关键能力就是就是对二维地图做区间划分,以及对区间进行编码 。
- 具体可应用的场景如下:
- 计算用户的精准的地理坐标位置
- 统计用户定点坐标一定范围内的其他地理位置,并计算出距离
经验总结扩展阅读
- Ubuntu 下安装 redis 并且设置远程登陆和密码
- RTX40系列价格_RTX40系列显卡价格
- [Android开发学iOS系列] Auto Layout
- CH58X服务修改
- 0 二 C# 语法分析器LR 语法分析
- 萃雅美白系列套装功效是什么?
- ? 海信电视机哪个系列好 选这些准没错
- iphone13系列价格_iphone13全系列价格
- 百雀羚帧颜霜孕妇可以用吗_百雀羚帧颜系列孕妇可以用吗
- vivoT1值得买吗_vivoT1值不值得买