1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 经纬度两点距离计算器_基于位置的服务之Redis Geo地理空间距离计算

经纬度两点距离计算器_基于位置的服务之Redis Geo地理空间距离计算

时间:2020-04-07 02:06:19

相关推荐

经纬度两点距离计算器_基于位置的服务之Redis Geo地理空间距离计算

添加地理位置到Redis

本篇文章就来扯一下犊子。。。不,来扯一下基于Redis Geo地理空间的实现。

言归正传,Redis Geo是怎么实现地理空间存储的?记得毛爷爷说过:实践是检验真理的唯一标准。

作为程序员没有点敲代码的能力怎么能行?

虽说在座的各位都是面向Ctrl+c,Ctrl+v编程,先使用一条简单的命令来引出今天的话题吧!

以上命令是在Redis命令行模式下执行,加入北上广深的经纬度以供我们后续的测试。那么在redis内部存储的类型是什么呢?为什么Geo相关命令没有删除元素的命令呢?

下图展示了在Redis中存储的数据和类型。

竟然是有序集合Zset,那么需要删除某个元素只需要调用Zset相关的命令即可。

以上说了一个最基本的命令,就是在有序集合中添加了北上广深的地理位置信息,这是什么原理?不要问我,反正我也不知道。

计算两点间的距离

以下命令分别计算广州-上海、深圳-广州,深圳-北京的距离以km为单位。

场景:某陌,你与陌生小姐姐的距离。实际情况可能会复杂点。

计算指定地位位置、指定范围内的集合

以下命令返回经度113度,纬度23度范围200km内的集合。WITHCOORD-指定该参数将返回与中心的距离,如广州到中心点的距离为30.6255km。WITHDIST-指定该参数将返回地址位置坐标,可以使用ASC或者DESC返回距离中心的距离排序。

场景:点外卖,你附近有多少商家等着你。咦,不是某陌吗?

获取地理位置信息

好理解,把Zset中的数字还原为经纬度,方便在地图中展示。如获取深圳、广州的经纬度,可获取单个点和多个点。场景:某陌,小姐姐在地图上的哪个点。

获取一个或多个位置元素的标准GeoHash

这也验证了开篇说的,共享前缀越长距离越近的说法,以上时深圳-北京,深圳-广州的结果。这个用处好像没那么大,可以供持久化到数据库等。

获取指定成员、指定范围内的集合

和georadius命令类似,这个命令的中心点是元素成员为中心的,以上命令展示了以深圳和北京为中心距离200km内的城市。场景:某陌,我附近的小姐姐有多少个。

后话

当然,使用Redis来作为业务解决方案或许还要根据实际需求来,这里只是一个引子,还是可以满足一些小项目的。

下期讲下基于Mysql的解决方案。有帮助,记得点赞!!点关注,不迷路!!!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。