geospatical地理位置
应用场景: 定位 附近的人 打车距离计算?
redis的Geo在Redis3.2版本就推出了! 这个功能可以推算地理位置的信息,两地之间的距离,方圆几里的人.....
六个命令
- geoadd命令
geoadd 添加地理位置 规则:两极无法直接添加,一般通过下载城市数据,通过java程序一次性导入!
- 有效的经度从-180度到180度。
- 有效的纬度从-85.05112878度到85.05112878度。
- 当坐标位置超出上述指定范围时,该命令将会返回一个错误。
参数 key 值(纬度,精度,名称)
- 获取指定城市的精度和纬度
geopos
127.0.0.1:6379> geopos china:city beijing
1) 1) "116.39999896287918091"
2) "39.90000009167092543"
127.0.0.1:6379> geopos china:city beijing shenhzhen hangzhou
1) 1) "116.39999896287918091"
2) "39.90000009167092543"
2) 1) "120.1600000262260437"
2) "30.2400003229490224"
3) 1) "120.1600000262260437"
2) "30.2400003229490224"
127.0.0.1:6379>
- 计算直线距离
geodist- m 表示单位为米
- km 表示单位为千米
- mi表示单位为英里
- ft表示单位为英尺
- 以给定的经纬度为中心 找出某一半径内的元素
georadius
拓展 : 查看附近的人. 通过半径来查询
-
找出位于指定元素周围的其他元素
georadiusbymember -
返回一个或多个位置元素的geohash表示
geohash该命令会返回一个11字符的geohash字符串,如果两个字符串越接近,则距离越近
geo底层的实现原理其实就是zSet 可以使用zset命令操作geo