计算两个给定位置之间的距离-Redis GEODIST 命令实现

前言

基于LBS服务的需求已常态化,其中一个非常常见的需求就是给点两个位置,要计算返回这两位位置间的距离。比较简单做法,是根据这两个位置的经纬度,计算出它们之间的直线距离。

实践

redis 客户端登录,脚本执行

redis> GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania"
(integer) 2
redis> GEODIST Sicily Palermo Catania
"166274.15156960039"
redis> GEODIST Sicily Palermo Catania km
"166.27415156960038"
redis> GEODIST Sicily Palermo Catania mi
"103.31822459492736"
redis> GEODIST Sicily Foo Bar
(nil)
redis> 

Sicily 是自定义的组名,同Sicily 把Palermo与Catania分为一对。
GEOADD 加入数据到redis
GEODIST 对加入的数据进行计算
km、mi是单位

注意点

指定单位的参数 unit 必须是以下单位的其中一个:

m 表示单位为米。
km 表示单位为千米。
mi 表示单位为英里。
ft 表示单位为英尺。
如果用户没有显式地指定单位参数, 那么 GEODIST 默认使用米作为单位。

GEODIST 命令在计算距离时会假设地球为完美的球形, 在极限情况下, 这一假设最大会造成 0.5% 的误差。
计算出的距离会以双精度浮点数的形式被返回。 如果给定的位置元素不存在, 那么命令返回空值。
如果两个位置之间的其中一个不存在, 那么命令返回空值。

java中应用

Jedis类关键源码:
在这里插入图片描述

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值