redis中的 geospatial(地理位置)使用
16lz
2021-03-25
geospatial(地理位置)
朋友的定位,附近的人,打车距离计算?
Redis的Geo在Redis3.2版本就推出了!这个功能可以推算地理位置的信息,俩地之间的距离,方圆几里的人!
官方文档:http://www.redis.net.cn/order/3685.html
getadd
# getadd# 规则:俩极无法添,我们一般会下载城市数据,直接通过java程序一次性导入!# 参数 key 值(纬度,经度,名称)!经纬度写错会报以下错误。#(error) ERR invalid longitude,latitude pair 39.900000,116.400000127.0.0.1:6379> Geoadd china:city 116.40 39.90 beijing #指定的城市经度纬度(integer) 1127.0.0.1:6379> Geoadd china:city 121.47 31.23 shanghai(integer) 1127.0.0.1:6379> Geoadd china:city 106.50 29.53 chongqin 114.05 22.52 shengzhen(integer) 2127.0.0.1:6379> Geoadd china:city 120.16 30.24 hangzhou(integer) 1127.0.0.1:6379> Geoadd china:city 108.96 34.26 xian(integer) 1
getpos
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 chongqin1) 1) "116.39999896287918091" 2) "39.90000009167092543"2) 1) "106.49999767541885376" 2) "29.52999957900659211"
geodist
俩人之间的距离!
单位:
- m 表示单位为米。
- km 表示单位为千米。
- mi 表示单位为英里。
- ft 表示单位为英尺。
127.0.0.1:6379> geodist china:city beijing shanghai #查看北京到上海的直线距离"1067378.7564"127.0.0.1:6379> geodist china:city beijing shanghai km"1067.3788"
由于定位问题,但是我们也可以看到大致距离相差不大。
georadius 以指定的经纬度为中心,找出某一半径的元素
找附近的人?(获取所有附近的人的地址,定位!)通过半径来查询!
获得指定数量的人,200
所有数据应该都录入:china:city,才会让结果更加请求!
127.0.0.1:6379> GEORADIUS china:city 110 30 1000 km # 以100 30这个经纬度为中心,寻找1000km内的城市1) "chongqin"2) "xian"3) "shengzhen"4) "hangzhou"127.0.0.1:6379> GEORADIUS china:city 110 30 500 km1) "chongqin"2) "xian"127.0.0.1:6379> GEORADIUS china:city 110 30 500 km withdist #显示到中间距离的位置1) 1) "chongqin" 2) "341.9374"2) 1) "xian" 2) "483.8340"127.0.0.1:6379> GEORADIUS china:city 110 30 500 km withcoord #显示他人的定位信息1) 1) "chongqin" 2) 1) "106.49999767541885376" 2) "29.52999957900659211"2) 1) "xian" 2) 1) "108.96000176668167114" 2) "34.25999964418929977"127.0.0.1:6379> GEORADIUS china:city 110 30 500 km withdist withcoord count 1 #筛选出指定的结果!1) 1) "chongqin" 2) "341.9374" 3) 1) "106.49999767541885376" 2) "29.52999957900659211"127.0.0.1:6379> GEORADIUS china:city 110 30 500 km withdist withcoord count 21) 1) "chongqin" 2) "341.9374" 3) 1) "106.49999767541885376" 2) "29.52999957900659211"2) 1) "xian" 2) "483.8340" 3) 1) "108.96000176668167114" 2) "34.25999964418929977"
GEORADIUSBYMEMBER
#找出位于指定元素周围的其他元素!127.0.0.1:6379> GEORADIUSBYMEMBER china:city beijing 1000 km1) "beijing"2) "xian"127.0.0.1:6379> GEORADIUSBYMEMBER china:city shanghai 400 km1) "hangzhou"2) "shanghai"
GEO 底层的实现原理就是Zset
127.0.0.1:6379> ZRANGE china:city 0 -1 #查看地图中全部元素1) "chongqin"2) "xian"3) "shengzhen"4) "hangzhou"5) "shanghai"6) "beijing"127.0.0.1:6379> zrem china:city beijing #移除指定元素(integer) 1127.0.0.1:6379> ZRANGE china:city 0 -11) "chongqin"2) "xian"3) "shengzhen"4) "hangzhou"5) "shanghai"
©著作权归作者所有:来自51CTO博客作者马悦悦的原创作品,如需转载,请注明出处,否则将追究法律责任每一份赞赏源于懂得
赞赏
0人进行了赞赏支持
更多相关文章
- JS获取指定字符串中出现次数最多的字符及其出现次数
- SpringBoot 指定首页和404页面
- Nginx架构详解:nginx 的安装和配置
- 学会这15点,让你分分钟拿下Redis数据库
- centos 7中的文本处理工具sed命令的使用
- Veeam v11 重量级功能 不可变存储库(Linux)
- Dynamics 365使用代码发送邮件给指定邮箱地址
- mysql查询指定字段以","拼接字符串作为结果返回
- 练习2-6 计算物体自由下落的距离 (5分)