redis geo 地理位置系应用战案例
admin
2023-01-27 23:59:59
0

专有名词
geographic 地理
radius 半径范围; 半径(距离); 用半径度量的圆形面积

redis GEO实现

redis GEO实现主要包含了以下两项技术:

1、使用geohash保存地理位置的坐标。
2、使用有序集合(sort set)保存地理位置的集合。(重点:基于sort set存储)

redis GEO 方法列表

  1. geoadd

含义:

将指定的地理空间位置(纬度、经度、名称)添加到指定的key中。

语法:

GEOADD key longitude latitude member [longitude latitude member]

实现:

geoadd city_clusters 116.405285 39.904989 beijing  121.472644 31.231706 shanghai
  1. geopos

含义:

从key里返回所有给定位置元素的位置(经度和纬度)

语法:

GEOPOS key member [member ...]

实现:

127.0.0.1:6379> geopos city_clusters beijing shanghai
1) 1) "116.40528291463851929"
   2) "39.9049884229125027"
2) 1) "121.47264629602432251"
   2) "31.23170490709807012"
  1. geodist

含义:

返回两个给定位置之间的距离。
备注:
指定单位的参数 unit 必须是以下单位的其中一个:
m 表示单位为米。
km 表示单位为千米。
mi 表示单位为英里。
ft 表示单位为英尺。
如果用户没有显式地指定单位参数, 那么 GEODIST 默认使用米作为单位。

语法:

GEODIST key member1 member2 [unit]

实现:

127.0.0.1:6379> geodist city_clusters beijing shanghai km
"1067.5980"
127.0.0.1:6379> geodist city_clusters beijing shanghai
"1067597.9668"
  1. geohash

含义:

返回一个或多个位置元素的 Geohash 表示。
作用:将二维的经纬度转换成字符串。

语法:

GEOHASH key member [member ...]

实现:

127.0.0.1:6379> geohash city_clusters beijing
1) "wx4g0b7xrt0"
127.0.0.1:6379> geohash city_clusters beijing shanghai
1) "wx4g0b7xrt0"
2) "wtw3sjt9vg0"
  1. georadius

含义:

以给定的经纬度为中心, 返回键包含的位置元素当中, 与中心的距离不超过给定最大距离的所有位置元素。
备注:
范围可以使用以下其中一个单位:
m 表示单位为米。
km 表示单位为千米。
mi 表示单位为英里。
ft 表示单位为英尺。
在给定以下可选项时, 命令会返回额外的信息:
WITHDIST: 在返回位置元素的同时, 将位置元素与中心之间的距离也一并返回。 距离的单位和用户给定的范围单位保持一致。
WITHCOORD: 将位置元素的经度和维度也一并返回。
WITHHASH: 以 52 位有符号整数的形式, 返回位置元素经过原始 geohash 编码的有序集合分值。 这个选项主要用于底层应用或者调试, 实际中的作用并不大。

COUNT限定返回的记录数

命令默认返回未排序的位置元素。 通过以下两个参数, 用户可以指定被返回位置元素的排序方式:
ASC: 根据中心的位置, 按照从近到远的方式返回位置元素。
DESC: 根据中心的位置, 按照从远到近的方式返回位置元素。

语法:

GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]

实现:

 georadius city_clusters 114.546569 30.496705 1000 km withdist withcoord withhash  count 3 asc  
1) 1) "wuhan"
   2) "0.0002"
   3) (integer) 4051940381831537
   4) 1) "114.54657107591629028"
      2) "30.49670420836107354"
2) 1) "ezhou"
   2) "34.4580"
   3) (integer) 4051965036178493
   4) 1) "114.88938957452774048"
      2) "30.40377626121739496"
3) 1) "shanghai"
   2) "666.1872"
   3) (integer) 4054803464817068
   4) 1) "121.47264629602432251"
      2) "31.23170490709807012
  1. georadiusbymember

含义:

和 GEORADIUS 命令一样, 都可以找出位于指定范围内的元素, 但是 GEORADIUSBYMEMBER 的中心点是由给定的位置元素决定的, 而不是像 GEORADIUS 那样, 使用输入的经度和纬度来决定中心点
备注:
同georadius

语法:

GEORADIUSBYMEMBER key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count]

实现:

 georadiusbymember city_clusters ezhou 1000 km withcoord withdist withhash count 10 asc
1) 1) "ezhou"
   2) "0.0000"
   3) (integer) 4051965036178493
   4) 1) "114.88938957452774048"
      2) "30.40377626121739496"
2) 1) "wuhan"
   2) "34.4578"
   3) (integer) 4051940381831537
   4) 1) "114.54657107591629028"
      2) "30.49670420836107354"
3) 1) "shanghai"
   2) "635.4470"
   3) (integer) 4054803464817068
   4) 1) "121.47264629602432251"
      2) "31.23170490709807012"

相关内容

热门资讯

“镐山”之后美再威胁袭伊基础设... 截至7月22日,美军已连续11晚对伊朗发动袭击,伊方对美中东地区军事基地的反击也未停止。与此同时,美...
美国“痛失”杨植麟,这是历史性... 杨植麟的月之暗面创造了Kimi K3,轰动整个世界。他是近年来第一个放弃了美国机会、回中国创业,并且...
铭显光电取得LED显示屏加工夹... 国家知识产权局信息显示,上海铭显光电科技有限公司取得一项名为“一种LED显示屏加工夹具”的专利,授权...
大盘承压依旧登顶,vivo拿下... 7月22日消息,市场调研机构Omdia发布2026年第二季度印度智能市场报告,数据显示本季度印度手机...
白宫发布《科学:新的黄金时代》... 据白宫7月21日消息,白宫科技政策办公室、管理与预算办公室联合发布《科学:新的黄金时代》报告。本次备...
民营商业火箭首次从长三角东海海... 北京时间7月22日10时54分,我国太原卫星发射中心在上海东部海域使用引力一号遥四运载火箭,将搭载的...
美威胁袭伊基础设施,伊朗军方:... △当地时间21日,船只在霍尔木兹海峡航行伊朗武装部队哈塔姆安比亚中央总部当地时间22日发布声明称,美...
扑翼机器人问世:像潜水鸟一样在... 潜鸟、海鸥、海鹦和海燕,是自然界中约100种既能飞行又能游泳的鸟类。这些潜水鸟能够俯冲入水追逐猎物,...
当科学家走进西部脑谷:这里有望... 7月22日,2026天府科学家创新发展大会暨成都科产融合对接活动锦江经开区脑机接口专场在锦江区成功举...
女子身份证丢失后名下出现“吸毒... 四川籍的庞女士定居浙江宁波多年,她怎么也没想到,因丢失身份证一事,竟让她陷入长达7年“自证清白”的困...