数据库
首页 > 数据库> > redis GEO详解

redis GEO详解

作者:互联网

redis GEO:

redis GEO主要用于存储地理位置信息,并对存储的信息进行操作,该功能在Redis 3.2版本新增。

redis GEO操作方法:

geoadd:

geoadd用于存储指定的地理空间位置,可以将一个或多个经度(longitude)、维度(latitude)、位置名称(member)添加到指定的key中。

geoadd语法格式如下:

GEOADD key longitude latitude member [longitude latitude member ...]

geoadd实例:

//添加两个位置信息
redis> GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania"
(integer) 2
//计算两个位置之间的距离
redis> GEODIST Sicily Palermo Catania
"166274.1516"
//获取给定经度、维度、范围内的地理位置集合
redis> GEORADIUS Sicily 15 37 100 km
1) "Catania"
//获取给定经度、维度、范围内的地理位置集合
redis> GEORADIUS Sicily 15 37 200 km
1) "Palermo"
2) "Catania"
redis>

geopos:

geopos用于从给定的key里面返回所有指定名称(member)的位置(经度和维度),不存在的返回nil。

geopos语法格式如下:

GEOPOS key member [member ...]

geopos实例:

//添加两个位置信息
redis> GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania"
(integer) 2
//根据名称获取地理位置的坐标
redis> GEOPOS Sicily Palermo Catania NonExisting
1) 1) "13.36138933897018433"
   2) "38.11555639549629859"
2) 1) "15.08726745843887329"
   2) "37.50266842333162032"
//不存在,返回nil
3) (nil)
redis>

geodist:

geodist用于返回两个给定位置之间的距离。

geodist语法格式如下:

GEODIST key member1 member2 [m|km|ft|mi]

member1 、 member2为两个地理位置,最后为距离单位参数说明。

geodist实例:

//添加两个位置信息
redis> GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania"
(integer) 2
//单位:米
redis> GEODIST Sicily Palermo Catania
"166274.1516"
redis> GEODIST Sicily Palermo Catania km
"166.2742"
redis> GEODIST Sicily Palermo Catania mi
"103.3182"
redis> GEODIST Sicily Foo Bar
(nil)
redis>

georadius、georadiusbymember:

georadius以给定的经纬度为中心,返回键包含的位置元素当中,与中心的距离不超过给定最大距离的所有位置元素。

georadiusbymember和georedius命令一样,都可以找出位于指定范围内的元素,但是georadiusbymemeber的中心点是由给定的位置元素决定的,而不是使用经度和维度来决定中心点。

georadius与georadiusbymemeber语法格式如下:

GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]
GEORADIUSBYMEMBER key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]

georadius实例:

//添加两个位置元素信息
redis> GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania"
(integer) 2
//返回位置元素的同时,将位置元素与中心之间的距离也一并返回
redis> GEORADIUS Sicily 15 37 200 km WITHDIST
1) 1) "Palermo"
   2) "190.4424"
2) 1) "Catania"
   2) "56.4413"
//将位置元素的经度和纬度也一并返回
redis> GEORADIUS Sicily 15 37 200 km WITHCOORD
1) 1) "Palermo"
   2) 1) "13.36138933897018433"
      2) "38.11555639549629859"
2) 1) "Catania"
   2) 1) "15.08726745843887329"
      2) "37.50266842333162032"
//与中心之间的距离、经度纬度一并返回
redis> GEORADIUS Sicily 15 37 200 km WITHDIST WITHCOORD
1) 1) "Palermo"
   2) "190.4424"
   3) 1) "13.36138933897018433"
      2) "38.11555639549629859"
2) 1) "Catania"
   2) "56.4413"
   3) 1) "15.08726745843887329"
      2) "37.50266842333162032"
redis>

georadiusbymember实例:

redis> GEOADD Sicily 13.583333 37.316667 "Agrigento"
(integer) 1
redis> GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania"
(integer) 2
redis> GEORADIUSBYMEMBER Sicily Agrigento 100 km
1) "Agrigento"
2) "Palermo"
redis>

geohash:

redis GEO使用geohash来保存地理位置坐标

geohash用于获取一个或多个位置 元素的geohash值

geohash语法格式如下:

GEOHASH key member [member ...]

geohash实例:

redis> GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania"
(integer) 2
redis> GEOHASH Sicily Palermo Catania
1) "sqc8b49rny0"
2) "sqdtr74hyu0"
redis>

 

标签:Palermo,Sicily,redis,km,详解,key,Catania,GEO
来源: https://blog.csdn.net/li_w_ch/article/details/110632025