Redis类型之Geospatial

(1)简介

Redis 3.2 中增加了对GEO类型的支持。GEO,Geographic,地理信息的缩写。该类型,就是元素的2维坐标,在地图上就是经纬度。redis基于该类型,提供了经纬度设置,查询,范围查询,距离查询,经纬度Hash等常见操作。

使用场景

  • 高德地图附近地点

  • 微信摇一摇附近的妹子

(2)命令

geoadd <key> < longitude> <latitude> <member> :添加地理位置(经度,纬度,名称). 俩极无法增加

127.0.0.1:6379> geoadd city 116.40 39.91 天安门 116.40 39.92 故宫
(integer) 2

geopos <key> <member>:获得指定地区的坐标值

127.0.0.1:6379> GEOPOS city 天安门
1) 1) "116.39999896287918091"
   2) "39.90999956664450821"
 

GEOHASH key member [member ...]: 返回坐标的 geohash 表示

127.0.0.1:6379> geohash city 天安门
1) "wx4g09ruse0"

geodist <key> <member1> <member2> [m|km|ft|mi ]:获取两个位置之间的直线距离

# 指定单位km
127.0.0.1:6379> geodist city 天安门 故宫 km
1.1122

GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count]: 以给定的经纬度为中心,找出指定半径内的元素

  • WITHDIST: 在返回位置元素的同时, 将位置元素与中心之间的距离也一并返回。 距离的单位和用户给定的范围单位保持一致。

  • WITHCOORD: 将位置元素的经度和维度也一并返回。

  • WITHHASH: 以 52 位有符号整数的形式, 返回位置元素经过原始 geohash 编码的有序集合分值。 这个选项主要用于底层应用或者调试, 实际中的作用并不大。

  • COUNT 指定返回元素的个数

命令默认返回未排序的位置元素。 通过以下两个参数, 用户可以指定被返回位置元素的排序方式:

  • ASC: 根据中心的位置, 按照从近到远的方式返回位置元素。

  • DESC: 根据中心的位置, 按照从远到近的方式返回位置元素。

# 增加坐标
redis> GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania"
(integer) 2
# 以 15 37 为中心,方圆 200km 的位置元素,计算出这些位置元素与中心点的距离。
redis> GEORADIUS Sicily 15 37 200 km WITHDIST
1) 1) "Palermo"
   2) "190.4424"
2) 1) "Catania"
   2) "56.4413"
​
# # 以 15 37 为中心,方圆 200km 的位置元素和元素的坐标
redis> GEORADIUS Sicily 15 37 200 km WITHCOORD
1) 1) "Palermo"
   2) 1) "13.361389338970184"
      2) "38.115556395496299"
2) 1) "Catania"
   2) 1) "15.087267458438873"
      2) "37.50266842333162"
​
# 位置元素的坐标和中心点的距离都打印出来
redis> GEORADIUS Sicily 15 37 200 km WITHDIST WITHCOORD
1) 1) "Palermo"
   2) "190.4424"
   3) 1) "13.361389338970184"
      2) "38.115556395496299"
2) 1) "Catania"
   2) "56.4413"
   3) 1) "15.087267458438873"
      2) "37.50266842333162"
​
# 指定返回一个位置元素
redis> GEORADIUS Sicily 15 37 200 km WITHDIST WITHCOORD count 1
Catania
56.4413
15.08726745843887329
37.50266842333162032
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鲨瓜2号

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值