redis地理位置


redis 3.2版本中增加的最大功能就是對GEO(地理位置)的支持

當前業務中地圖方面是調用高德api(雲圖),請求多少會有延遲  而redsigeo可以實現查找附近的終端以及測量兩點之間的直線距離(有誤差) 

  • 1、geoadd:增加某個地理位置的坐標。
  • 2、geopos:獲取某個地理位置的坐標。
  • 3、geodist:獲取兩個地理位置的距離。
  • 4、georadius:根據給定地理位置坐標獲取指定范圍內的地理位置集合。
  • 5、georadiusbymember:根據給定地理位置獲取指定范圍內的地理位置集合。
  • 6、geohash:獲取某個地理位置的geohash值。

geoadd

geoadd用來增加地理位置的坐標,可以批量添加地理位置,命令格式為:

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

key標識一個地理位置的集合。longitude latitude member標識了一個地理位置的坐標。longitude是地理位置的經度,latitude是地理位置的緯度。member是該地理位置的名稱。GEOADD可以批量給集合添加一批地理位置。

geopos

geopos可以獲取地理位置的坐標,可以批量獲取多個地理位置的坐標,命令格式為:

GEOPOS key member [member ...] 

geodist

geodist用來獲取兩個地理位置的距離,命令格式為:

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

單位可以指定為以下四種類型:

  • m:米,距離單位默認為米,不傳遞該參數則單位為米。
  • km:公里。
  • mi:英里。
  • ft:英尺。

georadius

georadius可以根據給定地理位置坐標獲取指定范圍內的地理位置集合。命令格式為:

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

longitude latitude標識了地理位置的坐標,radius表示范圍距離,距離單位可以為m|km|ft|mi,還有一些可選參數:

  • WITHCOORD:傳入WITHCOORD參數,則返回結果會帶上匹配位置的經緯度。
  • WITHDIST:傳入WITHDIST參數,則返回結果會帶上匹配位置與給定地理位置的距離。
  • ASC|DESC:默認結果是未排序的,傳入ASC為從近到遠排序,傳入DESC為從遠到近排序。
  • WITHHASH:傳入WITHHASH參數,則返回結果會帶上匹配位置的hash值。
  • COUNT count:傳入COUNT參數,可以返回指定數量的結果。

georadiusbymember

georadiusbymember可以根據給定地理位置獲取指定范圍內的地理位置集合。georadius命令傳遞的是坐標,georadiusbymember傳遞的是地理位置。georadius更為靈活,可以獲取任何坐標點范圍內的地理位置。但是大多數時候,只是想獲取某個地理位置附近的其他地理位置,使用georadiusbymember則更為方便。georadiusbymember命令格式為(命令可選參數與georadius含義一樣):

GEORADIUSBYMEMBER key member radius [m|km|ft|mi] [WITHCOORD] [WITHDIST] [ASC|DESC] [WITHHASH] [COUNT count] 

geohash

geohash可以獲取某個地理位置的geohash值。geohash是將二維的經緯度轉換成字符串hash值的算法,后面會具體介紹geohash原理。可以批量獲取多個地理位置的geohash值。命令格式為:

GEOHASH key member [member ...]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM