day17 redis GEO

redis GEO

redis GEO 主要用于存储地理位置信息,并对存储的信息进行操作,该功能在 3.2版本新增

redis GEO 操作方法有:

  • geoadd:添加地理位置的坐标
  • geopos:获取地理位置的坐标
  • geodist:计算两个位置之间的距离
  • georadius:根据用户给定的经纬度坐标来获取指定范围内的地理位置集合
  • georadiusbymember:根据存储在位置集合里面的某个地点获取指定范围内的地理位置集合
  • geohash:返回一个或多个位置对象的 geohash 值

geoadd

用于存储指定的地理空间位置,可以将一个多个经度、维度、位置名称添加到指定的 key 中。

GEOADD key longitude latitude member [longitude latitude member… ]

示例
> GEOADD sicily 13.36 38.11 "palermo" 15.08 37.50 "catania"
(integer) 2

> GEODIST sicily palermo catainia
166274.15

> GEORADIUS sicily 15 37 100 km
1) "catania"

> GEORADIUS sicily 15 37 200 km
1) "palermo"
2) "catania"

geopos

用于从给定的 key 里返回所有指定名称(member)的位置(经度,维度),不存在时返回 null

GEOPOS key member [member …]

示例
> GEOADD sicily 13.36 38.11 "palermo" 15.08 37.50 "catania"
(integer) 2

> GEOPOS sicily palermo catania nonexisting
1) 1) "13.36"
   2) "38.11"
2) 1) "15.08"
   2) "37.50"
3) (nil)

geodist

用于返回两个给定位置之间的距离

GEODIST key member1 member2 [ m|km|ft|mi ]

member1、member2 为两个地理位置

最后一个距离单位参数说明

  • m:米,默认单位
  • km:千米
  • mi:英里
  • ft:英尺
示例
> GEOADD sicily 13.36 38.11 "palermo" 15.08 37.50 "catania"
(integer) 2

> GEODIST sicily palermo catania
"166274.15"

> GEODIST sicily palermo catania km
"166.2742"

georadius、georadiusbymember

georadius 以给定的经纬度为中心,返回键包含的位置元素当中,与中心距离不超过给定最大距离的所有元素。

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

georadiusbymember 和 georadius 命令一样,都可以找出位于指定范围内的元素,但是 georadiusbymember 的中心的是由给定的位置元素决定的,而不是使用精度和维度来决定中心点。(有成员决定中心点,而不是直接指定)

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

参数说明:(之前写过得长度单位,不再赘述)

  • WITHDIST 在返回位置元素的同时,将位置元素与中心之间的距离也一并返回
  • WITHCOORD 将位置元素的经纬度也一并返回
  • WITHHASH 以 52位有符号整数的形式,返回位置元素经过原始 geohash 编码的有序集合分值。主要用于底层应用或调试,实际作用不大
  • COUNT 限定返回的记录数量
  • ASC 查找结果根据距离从近到远排序
  • DESC 查找结果根据从远到近排序
示例

georadius 示例

> GEOADD sicily 13.36 38.11 "palermo" 15.08 37.50 "catania"
(integer) 2

> GEORADIUS sicily 15 37 200 km WITHDIST
1) 1) "palermo"
   2) "190.44"
2) 1) "catania"
   2) "56.44"

georadiusbymember

> GEOADD sicily 13.36 38.11 "palermo" 15.08 37.50 "catania"
(integer) 2

> GEOADD sicily 13.58 37.32 "agrigento"
(integer) 1

> GEORADIUSBYMEMBER sicily agrigento 100 km
1) "agrigento"
2) "palermo"

geohash

redis GEO 使用 geohash 来保存地理位置的坐标。geohash 用于获取一个或多个元素的 geohash 值。

GEOHASH key member [member …]

示例
> GEOADD sicily 13.36 38.11 "palermo" 15.08 37.50 "catania"
(integer) 2

> GEOHASH sicily palermo catania
1) "sqc8b49rny0"
2) "sqdtr74hyu0"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值