基于Redis实现查找附近的人

之前分享过一篇《使用geohash实现查找附近的人》,其实redis在3.2版本之后也提供了地理位置的能力。

geoadd命令

该命令是添加地理位置信息,基本格式是:基于Redis实现查找附近的人_第1张图片

基于Redis实现查找附近的人
key:键名
longitude:经度
latitude:纬度
member:该位置名字
举个例子,我现在要添加福州的软件园的地理位置。

首先我通过某歌地图搜索到软件园,右键地点,点击“这儿有什么”,就会弹出经纬度小卡片,如图:基于Redis实现查找附近的人_第2张图片

基于Redis实现查找附近的人
redis中执行,如图:基于Redis实现查找附近的人_第3张图片

基于Redis实现查找附近的人
要注意的是,某歌地图搜出来的坐标,纬度在前,经度在后,而redis命令是相反的。

如果要一次添加多个位置,直接在后面追加经纬度和member即可。

geodist命令

该命令是计算两个位置的距离,为了演示效果,我再添加一个位置基于Redis实现查找附近的人_第4张图片

基于Redis实现查找附近的人
计算两点之间的距离:基于Redis实现查找附近的人_第5张图片

基于Redis实现查找附近的人
默认单位是米,同时也支持其他单位:

m:米
km:公里
mi:英里
ft:英尺
直接将单位加在命令后面即可,如图:基于Redis实现查找附近的人_第6张图片

基于Redis实现查找附近的人

georadius命令

该命令是找出指定坐标点一定距离内的位置,基本格式是:基于Redis实现查找附近的人_第7张图片

基于Redis实现查找附近的人
这条命令比较长,后半部分用“[]”包裹的参数都是可选参数,非必填,可以先不看。

例如,找出“119.270673 26.114479” 附近1km和400m内的点:基于Redis实现查找附近的人_第8张图片

基于Redis实现查找附近的人
后面可选参数主要是针对查询结果做一些处理:

WITHCOORD:返回目标位置的经纬度
WITHDIST:返回与目标位置之间具体距离
ASC|DESC:按距离排序,ASC是从近到远,DESC相反
WITHHASH:返回目标位置的hash值
COUNT count: 指定返回数量
这些参数不一一演示,仅举其中三个例子:基于Redis实现查找附近的人_第9张图片

基于Redis实现查找附近的人
看到这里,相信你已经可以使用redis实现“查到附近的人”了。

georadiusbymember命令

该命令同样是找出距离指定位置n米距离内的点位,与georadius的区别是:georadius是指定坐标点来搜索,而georadiusbymember是指定member来搜索,如:基于Redis实现查找附近的人_第10张图片

基于Redis实现查找附近的人
其他参数都一样

geohash命令

该命令是计算某位置的hash值,基本格式如下:基于Redis实现查找附近的人_第11张图片

基于Redis实现查找附近的人
例如:基于Redis实现查找附近的人_第12张图片

基于Redis实现查找附近的人
所谓的hash值,其实就是一个字符串,它的计算方法就是我之前那篇《使用geohash实现查找附近的人》提到的算法,有兴趣的可以翻一翻那篇文章。

geopos命令

获取指定位置的坐标:基于Redis实现查找附近的人_第13张图片

基于Redis实现查找附近的人

你可能感兴趣的:(开发小笔记)