上手Redis系列(六):超全Geospatial特殊类型详解(地理位置)

廉价感情. 提交于 2020-10-01 23:51:57

学习Redis五种类型之一的Zset之前,我还是觉得我务必跟你说一声,也是在我文章之中说的很多的一句话,我想也会适用于学习Redis,那就是在接触文章里的Reids命令时,不用试图去记这些命令 ,用到时去看API帮助文档即可;会用了或者实践过了再去了解也不会迟

上手Redis系列

上手Redis必知必会:最基础知识点和最基本常用操作

上手Redis系列(一):超全String字符串类型详解
上手Redis系列(二):超全List列表类型详解(代码图文示例)
上手Redis系列(三):超全集合Set类型详解(代码图文示例)
上手Redis系列(四):超全哈希Hash类型详解(代码图文示例)
上手Redis系列(五):超全有序集合Zset类型详解




在Redis中会发现一个有趣的 套路 规律,就是每种类型的命令会由类型的首字母开头。就像看下面的Geospatial,如果你耐心看下面的命令会发现都会以 的 Geo 开头。

1.geospatial详解与用途

geospatial自Redis3.2.0版本可以使用。

在这里插入图片描述

geospatial 地理位置,具体用途在我们生活中随处可见,例如:地图导航,附近的人,共享单车距离等等。

2.geospatial的命令

有6个命令

GEOADD
GEODIST
GEOHASH
GEOPOS
GEORADIUS
GEORADIUSBYMEMBER

3.手敲代码

GEOADD 命令 - 添加一个地理位置

格式:GEOADD key longitude latitude member

这里添加了guangzhou(广州) 和 foshan(佛山) 的经纬度。

在这里插入图片描述

GEOPOS 命令 - [键值-名称] 查询经纬度。

格式:GEOPOS key member

这里查询两个名称,所以有两个经纬度。(如果输入一个名称,那么就是一个经纬度)

在这里插入图片描述

GEODIST 命令 - 输出两个目的地之间的距离。

格式:GEOPOS key member1 member2 m | km | ft | mi

这里输出的是广州和佛山两地之间的距离,km 单位是千米,公里。

在这里插入图片描述
实际广州到佛山的距离,可以看到非常接近。(因为没有精确到具体城市地点,所以会有一些误差)

在这里插入图片描述

GEORADIUS 命令 - 给定经纬度为中心,找半径内元素。

GEORADIUS的生活应用场景有很多,例如:你想骑共享单车,那么就可以用来找出附近单车的位置。包括更常见的打车,附近的人等等。

格式:GEORADIUS key longitude latitude radius m | km | ft | mi

我们再添加上海和西藏的经纬度。

在这里插入图片描述

小半径范围。

在这里插入图片描述

我们定一个位置,扩大半径范围,找出了所有城市。

在这里插入图片描述
GEORADIUS 后加上 WITHCOORD 还可以显示具体经度纬度 COUNT 可以限制显示数量。

格式:WITHCOORD COUNT count

在这里插入图片描述

GEORADIUSBYMEMBER 命令 - 找出指定范围元素

格式:GEORADIUSBYMEMBER key member radius m | km | ft | mi

跟GEORADIUS 有点相似,但是不同的是,GEORADIUSBYMEMBER 是选择已有的成员。

在这里插入图片描述

GEOHASH 命令 - 返回一个或多个位置元素的 Geohash 表示

其实就是返回11个Geohash字符串

在这里插入图片描述
那怎么查看所有地理位置和删除呢?

可以看上一篇Zset,因为Geospatial本质上是Zset(底层是Zset),所以可以用Zset的命令。

手Redis系列(五):超全有序集合Zset类型详解

查询所有地理位置

格式:ZRANGE key start stop

在这里插入图片描述
删除某一个地理位置

格式:ZREM key member

在这里插入图片描述

最后

最后的最后,为了更好的阅读体验,我把想说的话都放在了下面,嘿嘿。

我是一颗剽悍的种子 把我会的,认真的分享 是我写博客一直不变的信条。
如果你能看到这篇博文,说明咱们还是很有缘的;希望能带给你一些许帮助,创作的不易,
把我文章的知识带走,你的三连留下,点赞,评论,关注,是我最大的动力。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!