Redis GEO

简介

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

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

1.geoadd

geoadd 用于存储指定的地理空间位置,可以将一个或多个经度(longitude)、纬度(latitude)、位置名称(member)添加到指定的 key 中。
geoadd 语法格式如下:

GEOADD key longitude latitude member [longitude latitude member ...]

实例

127.0.0.1:6379> geoadd china:city 112.98 28.25 changsha
(integer) 1
127.0.0.1:6379> geoadd china:city 106.54 29.40 chongqing
(integer) 1
127.0.0.1:6379> geoadd china:city 116.23 40.27 beijin
(integer) 1
127.0.0.1:6379> geoadd china:city 125.28 43.83 changchun
(integer) 1

2.geopos

geopos 用于从给定的 key 里返回所有指定名称(member)的位置(经度和纬度),不存在的返回 nil。
geopos 语法格式如下:

GEOPOS key member [member ...]

实例

127.0.0.1:6379> geopos china:city beijin
1) 1) "116.23000055551528931"
   2) "40.27000094346310988"

3.geodist

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

geodist 语法格式如下:

GEODIST key member1 member2 [m|km|ft|mi]
#member1 member2 为两个地理位置。

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

  • m :米,默认单位。
  • km :千米。
  • mi :英里。
  • ft :英尺。

实例

127.0.0.1:6379> geodist china:city beijin changchun
"845189.1947"
127.0.0.1:6379> geodist china:city beijin chongqing km
"1495.9844"
127.0.0.1:6379> geodist china:city beijin changsha km
"1369.6265"

4.georadius、georadiusbymember

georadius以给定的经纬度为中心, 返回键包含的位置元素当中, 与中心的距离不超过给定最大距离的所有位置元素。
georadiusbymemberGEORADIUS 命令一样, 都可以找出位于指定范围内的元素, 但是 georadiusbymember的中心点是由给定的位置元素决定的, 而不是使用经度和纬度来决定中心点。

georadius 与 georadiusbymember 语法格式如下:

GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]
GEORADIUSBYMEMBER key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]
  • 参数说明:
    • m :米,默认单位。
    • km :千米。
    • mi :英里。
    • ft :英尺。
    • WITHDIST: 在返回位置元素的同时, 将位置元素与中心之间的距离也一并返回。
    • WITHCOORD: 将位置元素的经度和维度也一并返回。
    • WITHHASH: 以 52 位有符号整数的形式, 返回位置元素经过原始geohash 编码的有序集合分值。 这个选项主要用于底层应用或者调试, 实际中的作用并不大。
    • COUNT 限定返回的记录数。
    • ASC: 查找结果根据距离从近到远排序。
    • DESC: 查找结果根据从远到近排序。

georadius 实例:

127.0.0.1:6379> GEORADIUS china:city 110 40 1000 km
1) "beijin"
127.0.0.1:6379>  GEORADIUS china:city 110 40 2000 km
1) "chongqing"
2) "changsha"
3) "beijin"
4) "changchun"
127.0.0.1:6379> GEORADIUS china:city 110 40 2000 km withdist withcoord
1) 1) "chongqing"
   2) "1220.4252"
   3) 1) "106.54000014066696167"
      2) "29.39999880018641676"
2) 1) "changsha"
   2) "1335.1640"
   3) 1) "112.9800000786781311"
      2) "28.25000087963665152"
3) 1) "beijin"
   2) "530.5125"
   3) 1) "116.23000055551528931"
      2) "40.27000094346310988"
4) 1) "changchun"
   2) "1332.1530"
   3) 1) "125.27999907732009888"
      2) "43.82999906870654172"
127.0.0.1:6379>  GEORADIUS china:city 110 40 2000 km withdist withcoord count 2
1) 1) "beijin"
   2) "530.5125"
   3) 1) "116.23000055551528931"
      2) "40.27000094346310988"
2) 1) "chongqing"
   2) "1220.4252"
   3) 1) "106.54000014066696167"
      2) "29.39999880018641676"

georadiusbymember 实例:

127.0.0.1:6379> GEORADIUSBYMEMBER china:city changsha 5000 km
1) "chongqing"
2) "changsha"
3) "beijin"
4) "changchun"

5.geohash

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

geohash 语法格式如下:

GEOHASH key member [member ...]

实例:

127.0.0.1:6379> geohash china:city beijin chongqing
1) "wx4thfujg20"
2) "wm5z22h53v0"

6.补充

Redis GEO 个查询删操作

127.0.0.1:6379> zrange china:city 0 -1
1) "chongqing"
2) "changsha"
3) "beijin"
4) "changchun"
127.0.0.1:6379>  zrem china:city changchun
(integer) 1
127.0.0.1:6379> zrange china:city 0 -1
1) "chongqing"
2) "changsha"
3) "beijin"
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一只猪的思考

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

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

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

打赏作者

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

抵扣说明:

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

余额充值