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 ...]
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/89893.html
標籤:PHP
