Geo命令

简介:

Geo是redis用于存储地理位置信息的结构,与redis3.2版本新增。  

命令简介:

1.geoadd:添加地理位置的坐标 2.geopos:获取地理位置的坐标 3.geodist:计算两个位置之间的距离 4.georadius:根据用户给定的经纬度坐标获取指定范围内的地理位置集合 5.georadiusbymember:根据存储在位置集合里面的某一个地点获取范围内的地理位置集合 6.geohash:返回一个或者多个位置对象的geohash值。  

命令介绍:

1)geoadd

可用版本: >=3.2.0 时间复杂度: 每添加一个元素复杂度为O(log(N)) 命令格式: geoadd key longitude latitude member [longitude latitude member ....] 作用: 将给定的空间元素(经度,纬度,名字)添加到指定的键里面,这些数据将会以有序集合的形式保存在key中。 返回值: 新添加到key中的空间元素的数量,不包括已经存在但是被更新的元素。 注意: GEOADD可以记录的坐标有限,很接近两级的区域将无法被索引。 有效的经度在-180到180之间。 有效的纬度在-85.05112878到85.05112878之间。 如果输入的经纬度不在有效度数之间的话,geoadd将会返回一个error。  

2)geopos

可用版本: >=3.2.0 时间复杂度: 获取每一个元素的复杂度为O(log(N)) 命令格式: geopos key member [member ...] 作用: 获取key中指定member的位置信息(经度+纬度)。 返回值: 返回一个数组,数组中每一个项都由两个元素组成,第一个为经度,第二个为纬度。 注意: 当给定的位置元素不存在时,对应的数组项为nil。  

3)geodist

可用版本: >=3.2.0 时间复杂度: O(log(N)) 命令格式: geodist key member1 member2 [unit] 作用: 获取两个位置之间的距离。 返回值: 计算出的距离会以双精度浮点数的形式被返回,如果给定的元素不存在,将会返回nil。 注意: unit参数必须是下面其中的一个: 1. m-米 2.km-千米 3.mi-英里 4.ft-英尺 没有unit参数时,默认为米。 geodist计算距离时,默认地球为完美的球形,所以会存在0.5%之内的误差。  

4)georadius

可用版本: >=3.2.0 时间复杂度: O(N+log(M)),其中 N 为指定半径范围内的位置元素数量, 而 M 则是被返回位置元素的数量。 命令格式: georadius key longitude latitude radius unit [withcoord] [withdist] [withhash] [asc|desc] [count count] 作用: 以给定的经纬度为中心,返回键包含的位置元素当中,与中心的距离不超过给定的最大距离的所有位置元素。 返回值: 返回一个数组,在没有任何with参数的时候,返回格式为["New York","Milan","Paris"] 这样的线性(linear)列表。 在有with参数的时候,将会返回一个两层嵌套的数组。第一个位置为元素名称,然后按以下顺序: 1.浮点数型返回中心与位置元素的距离 2.geohash整数。 3.由两个元素组成的坐标,分别为经度与纬度。 注意: withdist:在返回位置元素的同时,将位置元素与中心的距离也一并返回。距离的单位和用户给定的范围单位保存一致。 withcoord:将位置元素的经度和纬度也一并返回。 withhash:以52位有符号整数的形式,返回位置元素经过原始geohash编码的有序集合分值。(实际作用不大) asc|desc:根据中心位置,安装距离从近到远、从远到近排序。 count:默认情况下会返回所有匹配的位置元素,count可以限制元素个数。  

5)georadiusbymember

可用版本: >=3.2.0 时间复杂度: O(log(N)+M), 其中 N 为指定范围之内的元素数量, 而 M 则是被返回的元素数量。 命令格式: georadiusbymember 作用: 以给定的元素为中心,返回键包含的位置元素当中,与中心的距离不超过给定的最大距离的所有位置元素。 返回值: 同georadius命令。  

6)geohash

可用版本: >=3.2.0 时间复杂度: 寻找每个位置元素的复杂度为 O(log(N)) , 其中 N 为给定键包含的位置元素数量。 命令格式: geohash key member [member ...] 作用: 获取一个或者多个位置元素的geohash表示。 返回值: 一个数组,每一个元素都是一个geohash。命令返回的geohash位置与用户请求时的位置一一对应。
上一篇:图的拓扑排序,AOV,完整实现,C++描述


下一篇:【544】Geohash 相关说明