Redis之GEO

增加地理位置信息
geoadd key longitude latitude member [longitude latitude member ...]
longitude、 latitude、 member分别是该地理位置的经度、 纬度、 成员
示例:geoadd cities:locations 116.28 39.55 beijing


获取地理位置信息
geopos key member [member ...]
示例:
geopos cities:locations tianjin


获取两个地理位置的距离
geodist key member1 member2 [unit]
其中unit代表返回结果的单位, 包含以下四种:
·m(meters) 代表米。
·km(kilometers) 代表公里。
·mi(miles) 代表英里。
·ft( feet) 代表尺。
示例:计算天津到北京的距离, 并以公里为单位
geodist cities:locations tianjin beijing km


获取指定位置范围内的地理信息位置集合
georadius key longitude latitude radiusm|km|ft|mi [withcoord] [withdist] [withhash] [COUNT count] [asc|desc] [store key] [storedist key]
georadiusbymember key member radiusm|km|ft|mi [withcoord] [withdist] [withhash] [COUNT count] [asc|desc] [store key] [storedist key]
georadius和georadiusbymember两个命令的作用是一样的, 都是以一个地理位置为中心算出指定半径内的其他地理信息位置, 不同的是georadius命令的中心位置给出了具体的经纬度, georadiusbymember只需给出成员即可。 其中radiusm|km|ft|mi是必需参数, 指定了半径( 带单位) , 这两个命令有很多可选参数, 如下所示:
·withcoord: 返回结果中包含经纬度。
·withdist: 返回结果中包含离中心节点位置的距离。
·withhash: 返回结果中包含geohash, 有关geohash后面介绍。
·COUNT count: 指定返回结果的数量。
·asc|desc: 返回结果按照离中心节点的距离做升序或者降序。
·store key: 将返回结果的地理位置信息保存到指定键。
241·storedist key: 将返回结果离中心节点的距离保存到指定键。
示例:计算五座城市中, 距离北京150公里以内的城市
georadiusbymember cities:locations beijing 150 km


获取geohash
geohash key member [member ...]
Redis使用geohash[3]将二维经纬度转换为一维字符串, 下面操作会返回beijing的geohash值。
> geohash cities:locations beijing
1) "wx4ww02w070"
geohash有如下特点:
·GEO的数据类型为zset, Redis将所有地理位置信息的geohash存放在zset中。
·字符串越长, 表示的位置更精确。
·两个字符串越相似, 它们之间的距离越近, Redis利用字符串前缀匹配算法实现相关的命令。
·geohash编码和经纬度是可以相互转换的。


删除地理位置信息
zrem key member
注:GEO没有提供删除成员的命令, 但是因为GEO的底层实现是zset, 所以
可以借用zrem命令实现对地理位置信息的删除。

geohash精度与长度对应关系

原文地址:https://www.cnblogs.com/MacoLee/p/14066725.html