美文网首页
使用Redis的geohash进行地理位置距离计算

使用Redis的geohash进行地理位置距离计算

作者: gao922699 | 来源:发表于2022-08-14 01:03 被阅读0次

geohash是一种通用的地理算法,mysql、mongodb等也有对应的支持,有空可以研究一下。

类似附近的人的需求

简单的数据库方式计算方法:

x0,y0是当前经纬度

select id from positions where x0-r < x < x0+r and y0-r < y < y0+r

这句sql圈出原点附近矩形范围内的值

再根据勾股定理计算出距离,再进行排序(如果考虑地球曲率等因素需要更复杂的算法,一般不是长途也不用考虑)

使用redis的geo指令

它是一个特殊的zset

geoadd company 116.48105 39.996794 juejin

geoadd company 116.562108 39.787602 jd 116.334255 40.027400 xiaomi

插入三维数组,经度、纬度、名称

geodist company juejin meituan km

获取两个元素之间的距离,名称1、名称2、单位(m, km, ft, mi)

geopos 获取元素经纬度

geohash 获取元素经纬度hash值

查询指定元素附近的其它元素

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

例:georadiusbymember company meituan 20 km withdist count 3 asc

获取距离美团最近的3个公司,并输出距离

根据坐标获取附近的元素

georadius

参数和georadiusbymember类似,就是把member换成了经纬度

georadius company 116.514202 39.905409 20 km withdist count 3 asc

相关文章

网友评论

      本文标题:使用Redis的geohash进行地理位置距离计算

      本文链接:https://www.haomeiwen.com/subject/wgoawrtx.html