Redis GEO 主要用于存储地理位置信息,并对存储的信息进行操作
geoadd
:添加地理位置的坐标。
geopos
:获取地理位置的坐标。
geodist
:计算两个位置之间的距离。
georadius:根据用户给定的经纬度坐标来获取指定范围内的地理位置集合。
georadiusbymember
:根据储存在位置集合里面的某个地点获取指定范围内的地理位置集合。
geohash:返回一个或多个位置对象的 geohash 值。
添加地理位置的坐标
语法:
geoadd key longitude latitude member [longitude latitude member …]
添加北京的地理位置(东经:116.397,北纬:39.916)
geoadd china:city 116.397 39.916 beijing
geoadd china:city 104.101 30.659 chengdu 114.029 30.582 wuhan
注意:
china:city 是 key,116.397 是 东经,39.916 是 北纬,beijing 是 成员
输入经纬度的时候要先经度后纬度
且经纬度的范围为:
有效的经度:从-180度到180度.
有效的纬度:从-85.05112878度到85.05112878度
获取地理位置的坐标
语法:
geopos key member [member …]
获取beijing的地理位置
geopos china:city beijing
计算两个位置之间的距离
语法:
GEODIST key member1 member2 [m|km|ft|mi]
member1 member2 为两个地理位置。
最后一个距离单位参数说明:
查询北京(beijing)到成都(chengdu)的距离
geodist china:city beijing chengdu
如图所示
查询北京(beijing)到成都(chengdu)的距离(以km为单位)
geodist china:city beijing chengdu km
根据用户给定的经纬度坐标来获取指定范围内的地理位置集合
语法:
georadius key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]
参数说明:
以东经110,北纬30 距离为2000km 进行查询
georadius china:city 110 30 2000 km
georadius china:city 110 30 2000 km withdist count 3 desc
georadius china:city 110 30 2000 km withcoord count 3 asc
根据储存在位置集合里面的某个地点获取指定范围内的地理位置集合
语法:
georadiusbymember key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]
参数说明与georadius
一样
查询距离成都(chengdu) 300km的距离的集合
georadiusbymember china:city chengdu 300 km
如图所示
georadiusbymember
与georadius
用法类似,只不过把参数经纬度改成了存在key里的member成员而已。
这里就不作过多演示了
返回一个或多个位置对象的 geohash 值
语法:
geohash key member [member …]
获取成都和武汉的geohash值
geohash china:city chengdu wuhan
geo的底层实现原理其实是zset所以也可以用zset的命令来操作geo的数据
如图
因为geo没有提供删除,因此我们可以使用zset命令进行删除
如果想要更深入细致的了解可以去官方网站了解
链接:https://www.redis.net.cn/order/3685.html
.