geo的底层实现原理其实就是Zset,可以通过Zset命令来操作geo数据,删除geo用zrem命令即可,zrange查看全部的地图数据
1、geospatial地理位置
朋友定位,附近的人,打车距离计算
1.1、geoadd
有效经度范==-180到180==,有效纬度范围==-85.05112878到85.05112878==,当位置超出指定范围时,该命令会返回一个错误
127.0.0.1:6379> GEOADD china:city 104.06301578277589 30.568854169057275 chengdu
(integer) 1
127.0.0.1:6379> geoadd china:city 108.94706023025512 34.26109184053986 xian 106.55877776733398 29.5571221332709 chongqin 116.41118112304687 39.90467219136971 beijing
(integer) 3
# 添加地图坐标信息 geoadd key 经度 纬度 地点名称
127.0.0.1:6379> zrange china:city 0 -1
1) "chongqin"
2) "chengdu"
3) "xian"
4) "beijing"
1.2、geopos
127.0.0.1:6379> GEOPOS china:city beijing chengdu # 获取指定点的经纬度信息
1) 1) "116.41118377447128296"
2) "39.90467158276758397"
2) 1) "104.06301766633987427"
2) "30.56885504616165861"
1.3、geodist
m:米,km:千米,mi:英里,ft:英尺
附近的人?(获取附近所有人的定位,定位,通过指定半径来查询)
127.0.0.1:6379> GEODIST china:city chengdu beijing km
"1525.8035"
# 数据库中两个点之间的距离,如 成都到北京的距离
1.4、georadius
指定位置:从数据库中,根据指定位置,指定半径,获取这个范围内的地点数据
127.0.0.1:6379> GEORADIUS china:city 104.06301578277589 30.568854169057275 1000 km
# 获取指定坐标点1000公里以内的地点
1) "chongqin"
2) "chengdu"
3) "xian"
1.5、georadiusbymember
指定元素:从数据库中,根据指定数据库中的元素,指定半径,获取这个范围内的地点数据
127.0.0.1:6379> georadiusbymember china:city chengdu 500 km
1) "chongqin"
2) "chengdu"
1.4、geohash
将二维的经纬度转换成11位的一维字符串,两个字符串越接近,距离也越近
127.0.0.1:6379> geohash china:city chengdu chongqin xian beijing
1) "wm6jbhbkkp0"
2) "wm7b0u9wxq0"
3) "wqj6zjhc6d0"
4) "wx4g102j910"