1、geospatial地理位置
geospatial地理位置
Redis的Geo在Redis3.2版本就退出来了推算地理位置信息,两地之间的距离
可以查询一些测试数据 https://jingweidu.51240.com/
[root@ysh ~]# redis-cli -p 6379
127.0.0.1:6379>
#参数 key 纬度,经度 ,名称
127.0.0.1:6379> GEOADD china:city 116.397128 39.916527 beijin
(integer) 1127.0.0.1:6379> geoadd china:city 121.48941 31.40527 shanghai
(integer) 1
127.0.0.1:6379> geoadd china:city 106.54041 29.40268 chongqing
(integer) 1
127.0.0.1:6379> geoadd china:city 113.88308 22.55329 shenzhen
(integer) 1
127.0.0.1:6379> geoadd china:city 108.93425 34.23053 xian
(integer) 1
geopos
127.0.0.1:6379> geopos china:city beijin chongqing xian # 获取指定城市的经度和纬度
1) 1) "116.39712899923324585"
2) "39.91652647362980844"
2) 1) "106.54040783643722534"
2) "29.40268053517299762"
3) 1) "108.93425256013870239"
2) "34.23053097599082406"
127.0.0.1:6379>
geodist
- km 单位千米
- mi 单位英里
- 单位英尺
127.0.0.1:6379> geodist china:city beijin shanghai #查询北京到上海的距离
"1052105.5643"
127.0.0.1:6379> geodist china:city beijin shanghai km #查询北京到上海的距离 km显示
"1052.1056"
georadius
我附近的人? (获取所有附近的人的地址,定位)通过半径来查询
# 以110 和 30 经纬度为中心 ,寻找1000km内的城市
127.0.0.1:6379> georadius china:city 110 30 1000 km
1) "chongqing"
2) "xian"
3) "shenzhen"
127.0.0.1:6379> georadius china:city 110 30 500 km
1) "chongqing"
2) "xian"
127.0.0.1:6379> georadius china:city 110 30 500 km withdist
1) 1) "chongqing"
2) "340.7667"
2) 1) "xian"
2) "481.1278"
127.0.0.1:6379> georadius china:city 110 30 500 km withcoord
1) 1) "chongqing"
2) 1) "106.54040783643722534"
2) "29.40268053517299762"
2) 1) "xian"
2) 1) "108.93425256013870239"
2) "34.23053097599082406"
# 筛选出指定的结果
127.0.0.1:6379> georadius china:city 110 30 500 km withdist withcoord count 1
1) 1) "chongqing"
2) "340.7667"
3) 1) "106.54040783643722534"
2) "29.40268053517299762"
# withdist 距离
# withcoord 经度纬度
127.0.0.1:6379> georadius china:city 110 30 500 km withdist withcoord count 2
1) 1) "chongqing"
2) "340.7667"
3) 1) "106.54040783643722534"
2) "29.40268053517299762"
2) 1) "xian"
2) "481.1278"
3) 1) "108.93425256013870239"
2) "34.23053097599082406"
GEORADIUSBYMEMBER
# 找出位于指定元素周围的其他元素
127.0.0.1:6379> GEORADIUSBYMEMBER china:city beijin 1000 km
1) "beijin"
2) "xian"
127.0.0.1:6379>
geohash
#将二维的维度转换为一维的字符串,如果两个字符串越接近,那么距离越近
127.0.0.1:6379> geohash china:city beijin shanghai
1) "wx4g0dtf9e0"
2) "wtw6st1uuq0"
127.0.0.1:6379>
GEO 底层的实现原理就是Zset 我们可以使用Zset命令来操作geo
#查看地图中全部的元素(城市)
127.0.0.1:6379> zrange china:city 0 -1
1) "chongqing"
2) "xian"
3) "shenzhen"
4) "shanghai"
5) "beijin"
127.0.0.1:6379> zrem china:city beijin
(integer) 1
127.0.0.1:6379> zrange china:city 0 -1
1) "chongqing"
2) "xian"
3) "shenzhen"
4) "shanghai"