Redis——GEO讲解

Redis——GEO

  • 前言
  • 一、GEO的相关命令
  • 二、命令演示
    • 1.geoadd
    • 2.geopos
    • 3.geodist
    • 4.georadius
    • 5.georadiusbymember
    • 5.geohash
  • 总结


前言

Redis GEO 主要用于存储地理位置信息,并对存储的信息进行操作

一、GEO的相关命令

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

二、命令演示

1.geoadd

添加地理位置的坐标

语法

geoadd key longitude latitude member [longitude latitude member …]

添加北京的地理位置(东经:116.397,北纬:39.916)

geoadd china:city 116.397 39.916 beijing

如图所示:
在这里插入图片描述
geoadd 也可添加多个

geoadd china:city 104.101 30.659 chengdu 114.029 30.582 wuhan

如图所示
在这里插入图片描述

注意
china:city 是 key,116.397 是 东经,39.916 是 北纬,beijing 是 成员
输入经纬度的时候要先经度后纬度
经纬度的范围为:
有效的经度:从-180度到180度.
有效的纬度:从-85.05112878度到85.05112878度

2.geopos

获取地理位置的坐标

语法

geopos key member [member …]

获取beijing的地理位置

 geopos china:city beijing

在这里插入图片描述
geopos 也可以获取多个
这里就不演示了

3.geodist

计算两个位置之间的距离

语法

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

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

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

查询北京(beijing)到成都(chengdu)的距离

geodist china:city beijing chengdu

如图所示
在这里插入图片描述
查询北京(beijing)到成都(chengdu)的距离(以km为单位)

geodist china:city beijing chengdu km

如图所示
在这里插入图片描述
后面的英里,英尺就不演示了。

4.georadius

根据用户给定的经纬度坐标来获取指定范围内的地理位置集合

语法

georadius key longitude latitude 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: 查找结果根据从远到近排序。

以东经110,北纬30 距离为2000km 进行查询

 georadius china:city 110 30 2000 km

如图所示Redis——GEO讲解_第1张图片
将查询结果从远到近,并只获取3个且得到距离

georadius china:city 110 30 2000 km withdist count 3 desc

如图所示
Redis——GEO讲解_第2张图片
将查询结果从近到远,并只获取3个且获得经纬度

 georadius china:city 110 30 2000 km withcoord count 3 asc

如图所示
Redis——GEO讲解_第3张图片

5.georadiusbymember

根据储存在位置集合里面的某个地点获取指定范围内的地理位置集合

语法

georadiusbymember key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]

参数说明与georadius一样

查询距离成都(chengdu) 300km的距离的集合

georadiusbymember china:city chengdu 300 km

如图所示
在这里插入图片描述
georadiusbymembergeoradius用法类似,只不过把参数经纬度改成了存在key里的member成员而已。
这里就不作过多演示了

5.geohash

返回一个或多个位置对象的 geohash 值

语法:

geohash key member [member …]

获取成都和武汉的geohash值

geohash china:city chengdu wuhan

如图所示
在这里插入图片描述
个人以为用的场景不多。

这是官方给出的解释
Redis——GEO讲解_第4张图片

总结

geo的底层实现原理其实是zset所以也可以用zset的命令来操作geo的数据

如图
Redis——GEO讲解_第5张图片
因为geo没有提供删除,因此我们可以使用zset命令进行删除

如图
Redis——GEO讲解_第6张图片

如果想要更深入细致的了解可以去官方网站了解
链接:https://www.redis.net.cn/order/3685.html.

你可能感兴趣的:(redis,数据库,database)