Redis-geospatial 表示地理位置 经纬度

GEOADD

1
2
3
4
5
6
7
8
9
# geoadd  经度 纬度 城市
# 规则:两级无法直接添加,一般可以通过配置文件一次性导入
geoadd china:city 116.23128 40.22077 beijing

geoadd china:city 121.48941 31.40527 shanghai

geoadd china:city 106.54041 29.40268 chongqing

geoadd china:city 117.20 39.12 tianjing

GEOPOS

1
2
3
4
5
6
7
8
9
10
# 获取某个城市的地址
# geopos key value
geopos china:city beijing
# output : [
{
"longitude": 116.23128265142441,
"latitude": 40.220769054385265
}
]
# 可以发现的是,虽然我在之前输入的值只有小数点后五位,但是这次查询的值却有这么多位

GEODIST

返回两个给定位置之间的距离

1
2
3
# geodist key value1 value2 
geodist china:city beijing chongqing (km)
# output : 1491536.4099

可以应用于寻找附近的人

GEORADIUM

寻找以某个点(经度+纬度)为中心多少半径内的城市

1
GOERADIUM china:city 自己的经度 自己的纬度 1000(多少距离内) km(单位)

GEORADIUSMEMBER

寻找以某个value为中心多少半径内的城市

这个api与上面的那个差不多,就是中心不一样

1
GEORADIUMMEMBER china:city beijing 1000 km 

GEOHASH

返回一个11个字符的Geohash字符串

1
geohash china:city beijing

总结

定位操作

底层实现是Zset