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人进行了赞赏支持

更多相关文章

  1. JS获取指定字符串中出现次数最多的字符及其出现次数
  2. SpringBoot 指定首页和404页面
  3. Nginx架构详解:nginx 的安装和配置
  4. 学会这15点,让你分分钟拿下Redis数据库
  5. centos 7中的文本处理工具sed命令的使用
  6. Veeam v11 重量级功能 不可变存储库(Linux)
  7. Dynamics 365使用代码发送邮件给指定邮箱地址
  8. mysql查询指定字段以","拼接字符串作为结果返回
  9. 练习2-6 计算物体自由下落的距离 (5分)

随机推荐

  1. 全网最全!彻底弄透Java处理GMT/UTC日期时
  2. 每天一算:Intersection of Two Arrays II
  3. Python主流Web框架之Tornado
  4. 每天一算:Two Sum
  5. Python 中星号的本质及其使用方式
  6. 每天一算: Number of Boomerangs
  7. 使用Azure Backup还原云端VM
  8. 二叉树实现
  9. linux文件目录结构汇总!Linux学习
  10. 使用pkg打包编译nodejs程序,手动设置缓存