tp5.0 根据经纬度 获取附近信息_Redis怎么实现查找附近的人之数据类型Geospatial...

前面我们已经把五大数据类型讲完了,今天我开始讲redis特殊数据类型Geospatial,地理位置的存储,这个是数据类型可以实现朋友定位,两个地方之间的距离,搜索附近的人等。具体操作就是将指定的地理空间位置(纬度、经度、名称)添加到指定的key中,这些数据将会存储到sorted set然后使用GEORADIUS或者GEORADIUSBYMEMBER命令对数据进行半径查询计算出范围内的元素和元素之间的距离。

9ce7c165b0a4259ef0c6a50f6bb07584.png

Geospatial数据类型只有六个命令

添加元素

Geoadd [key] [经度] [纬度] [元素]

操作这个命令之前我们需要去网上查找一些城市的经纬度坐标,因为经度和纬度是有范围限制的,如果随便添加有可能会报错,官网显示说明

· 有效的经度从-180度到180度。

· 有效的纬度从-85.05112878度到85.05112878度

所以添加的值不能超过这个范围,网上找了北京、上海、广州、深圳、杭州、南京的经纬度进行添加数据。

08ead711317cc2444c1f50555aa05720.png

这里我们只是测试当然是手动添加,实际中我们可以是程序进行批量添加城市位置信息。

取值

Geopos [key] [元素]:获取指定元素的经度纬度

a1e3327bab6ff8637eb1b53203b5cb94.png

获取两地之间的距离

Geodist [key] [元素1] [元素2]:获取元素1和元素2之间的距离

单位:

m:表示单位米

km:表示单位千米

4722b7de1f1364c75d95ced23656514c.png

Redis会根据两个经纬度的值进行计算得出两个地点间的距离。

获取某个元素附近的元素

以给定元素为原点,找出半径内的所有元素,这个功能是不是可以实现我们搜索附近的人,假如我当前位置经度纬度为 110 30 现在要找出记录这个点周围1000km内的城市

GEORADIUS [key] [当前位置经度] [当前位置纬度] [查找的范围]

4c97c325efd2f20f6c0cf31cde4ca97c.png

找查附近的城市并显示与城市的距离,在原命令上增加 withdist参数

9afb6f5e00ac829689b5ad9a707425ef.png

找查附近的城市并显示附近城市的经纬度,在原命令上增加 withcoord参数

a5b8ece4345c18d7f02da7f3be28eba5.png

查找指定个数的附近的城市,在原命令上增加 count参数

bca767bc7857ebf1c07a8bb1ad3c68fe.png

查找某个元素周围的元素

上面是通过我自定义的经纬度经查找,还可以换一种方式,以某个存在redis中的元素,查找这个元素附件的元素。

1b15434f0a34153c892586beb69b5d78.png

其实redis GEO底层原理是通过zsets实现的,所以一些zset命令也都可以使用,例如

查找key中的所有元素

2d5cf668f01057951a5f50f4e5a8d8e0.png

------------------------------------------------END-----------------------------------------------------------------

你的一个赞一个关注是我创作的动力,是我持续输出的能量源泉,老铁关注一波吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值