首页 > 其他 > 详细

3.地理位置查询功能geo,全称geospatial

时间:2021-03-30 09:34:14      阅读:33      评论:0      收藏:0      [点我收藏+]

这家伙有个帮我们封装好的功能,通过内部的zset集合结合算法,提供了如下功能

1.查询两个点之间的直线距离

2.以给定位置为中心,半径不超过给定半径的附近所有位置

3.以某个成员为中心,半径不超过给定半径的附近所有位置

 

有效的经度是-180度到180度
有效的纬度是-85.05112878度到85.05112878度

GEOADD 添加一个或多个地理位置元素到一个key中
格式:GEOADD key longitude latitude member [longitude latitude member ...]

GEODIST 返回一个key中指定两个位置之间的距离
格式:GEODIST key member1 member2 [unit] unit可以指定长度单位:m,km,ft等 默认为m

GEOHASH 返回一个或多个位置元素的 Geohash 表示,Geohash是一种经纬度散列算法,具体请百度。
格式: GEOHASH key member [member ...]

GEOPOS 返回一个或多个位置的经纬度信息,由于采用了geohash算法,返回的经纬度和添加时的数据可能会有细小误差
格式: GEOPOS key member [member ...]

GEORADIUS 以给定位置为中心,半径不超过给定半径的附近所有位置
格式 GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count]

GEORADIUSBYMEMBER 和GEORADIUS相似,只是中心点不是指定经纬度,而是指定已添加的某个位置作为中心
格式: GEORADIUSBYMEMBER key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count]

它的底层原理是zset,所以删除就可以使用zrem命令

127.0.0.1:6379> geoadd china-city 116 39 beijing 
(integer) 1
127.0.0.1:6379> geoadd china-city 121 31 shanghai
(integer) 1
127.0.0.1:6379> geoadd china-city 117 39 tianjing
(integer) 1
127.0.0.1:6379> geoadd china-city 106 29 chongqing
(integer) 1
127.0.0.1:6379> geoadd china-city 126 45 haerbing
(integer) 1
127.0.0.1:6379> geodist china-city beijing shanghai km
"999.2077"
127.0.0.1:6379> geodist china-city tianjing haerbing km
"998.2635"
127.0.0.1:6379> geohash china-city shanghai
1) "wtw037ms070"
127.0.0.1:6379> geohash china-city shanghai beijing
1) "wtw037ms070"
2) "wwfmzesx7y0"
127.0.0.1:6379> geopos china-city beijing shanghai
1) 1) "116.00000113248825073"
   2) "38.99999918434559731"
2) 1) "120.99999815225601196"
   2) "31.00000097648057817"
127.0.0.1:6379> georadius china-city 117 40 500 km
1) "beijing"
2) "tianjing"
127.0.0.1:6379> georadius china-city 117 40 700 km
1) "beijing"
2) "tianjing"
127.0.0.1:6379> georadius china-city 117 40 900 km
1) "beijing"
2) "tianjing"
127.0.0.1:6379> georadius china-city 117 40 1200 km
1) "beijing"
2) "tianjing"
3) "haerbing"
4) "shanghai"
127.0.0.1:6379> georadiusbymember china-city beijing 400 km
1) "beijing"
2) "tianjing"
127.0.0.1:6379> zrange china-city 0 -1
1) "chongqing"
2) "shanghai"
3) "beijing"
4) "tianjing"
5) "haerbing"
127.0.0.1:6379>

  

 

3.地理位置查询功能geo,全称geospatial

原文:https://www.cnblogs.com/johnzhao/p/14594784.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!