geospatial地理位置
阿新 • • 發佈:2021-01-05
技術標籤:redis
1、geospatial地理位置
geospatial地理位置
Redis的Geo在Redis3.2版本就退出來了推算地理位置資訊,兩地之間的距離
可以查詢一些測試資料 https://jingweidu.51240.com/
[[email protected] ~]# 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"