redis特殊数据类型 geospatial地理位置

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"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值