?
This document uses PHP Chinese website manual Release
GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]
自3.2.0起可用。
時(shí)間復(fù)雜度: O(N + log(M))其中N是由中心和半徑界定的圓形區(qū)域的邊界框內(nèi)的元素的數(shù)量,M 是索引內(nèi)的項(xiàng)目的數(shù)量。
使用 GEOADD 返回填充了地理空間信息的已排序集合的成員,這些位于由中心位置指定的區(qū)域的邊界內(nèi),并且與中心的最大距離(半徑)一致。
本手冊(cè)頁(yè)還涵蓋了GEORADIUS_RO
和GEORADIUSBYRANGE_RO
變種(參見(jiàn)下面的更多信息部分)。
此命令的常見(jiàn)用例是檢索指定點(diǎn)附近的地理空間項(xiàng)目,并且不超過(guò)指定數(shù)量的米(或其他單位)。例如,這允許向附近的應(yīng)用程序的移動(dòng)用戶(hù)建議位置。
半徑以下列單位之一指定:
m 為米。
km 為千米。
mi 為英里。
ft 為英尺。
該命令有選擇地使用以下選項(xiàng)返回附加信息:
WITHDIST
:還要返回指定中心返回物品的距離。距離以與指定為命令的半徑參數(shù)的單位相同的單位返回。
WITHCOORD
:還返回匹配項(xiàng)目的經(jīng)度,緯度坐標(biāo)。
WITHHASH
:還以52位無(wú)符號(hào)整數(shù)的形式返回項(xiàng)目的原始 geohash 編碼的有序集合分?jǐn)?shù)。這只對(duì)低級(jí)別的黑客或調(diào)試很有用,對(duì)于普通用戶(hù)來(lái)說(shuō)這很有趣。
該命令的默認(rèn)設(shè)置是返回未排序的項(xiàng)目。使用以下兩個(gè)選項(xiàng)可以調(diào)用兩種不同的排序方法:
ASC
:將返回的項(xiàng)目從最近的到最遠(yuǎn)的,相對(duì)于中心排序。
DESC
:從最遠(yuǎn)到最近的相對(duì)于中心的返回項(xiàng)目排序。
默認(rèn)情況下會(huì)返回所有匹配的項(xiàng)目。通過(guò)使用 COUNT <count>
選項(xiàng),可以將結(jié)果限制為前 N 個(gè)匹配項(xiàng)。但是請(qǐng)注意,在內(nèi)部,命令需要執(zhí)行與匹配指定區(qū)域的項(xiàng)目數(shù)量成比例的努力,因此,COUNT
即使只返回幾個(gè)結(jié)果,使用非常小的選項(xiàng)查詢(xún)非常大的區(qū)域也可能會(huì)很慢。另一方面,COUNT
如果通常只使用第一個(gè)結(jié)果,則可以成為減少帶寬使用的非常有效的方法。
陣列回復(fù),具體為:
沒(méi)有WITH
指定任何選項(xiàng),該命令只返回一個(gè)線性數(shù)組,如“紐約”,“米蘭”,“巴黎”。
如果WITHCOORD
,WITHDIST
或者WITHHASH
指定了選項(xiàng),該命令將返回陣列,其中每個(gè)子陣列表示單個(gè)項(xiàng)目的陣列。
當(dāng)附加信息作為每個(gè)項(xiàng)目的數(shù)組數(shù)組返回時(shí),子數(shù)組中的第一項(xiàng)始終是返回項(xiàng)目的名稱(chēng)。其他信息按以下順序作為子數(shù)組的連續(xù)元素返回。
1. 與中心的距離作為浮點(diǎn)數(shù),與半徑中指定的單位相同。
2. geohash 整數(shù)。
3. 坐標(biāo)作為兩個(gè)項(xiàng)目的 x,y 數(shù)組(經(jīng)度,緯度)。
例如,命令GEORADIUS Sicily 15 37 200 km WITHCOORD WITHDIST
將以下列方式返回每個(gè)項(xiàng)目:
["Palermo","190.4424",["13.361389338970184","38.115556395496299"]]
由于 GEORADIUS 和 GEORADIUSBYMEMBER 有一個(gè)STORE
和STOREDIST
選擇,他們?cè)诩夹g(shù)上標(biāo)記為在 Redis 的命令表寫(xiě)入命令。因?yàn)檫@個(gè)原因,只讀從屬會(huì)標(biāo)記它們,即使連接處于只讀模式,Redis 集群從屬也會(huì)將它們重定向到主實(shí)例(請(qǐng)參閱 Redis 集群的 READONLY 命令)。
打破與過(guò)去的兼容性被認(rèn)為是被拒絕的,至少對(duì)于 Redis 4.0 來(lái)說(shuō)是這樣,所以添加了兩個(gè)只讀的命令變體。他們完全像原來(lái)的命令,但拒絕STORE
和STOREDIST
選項(xiàng)。這兩個(gè)變量被稱(chēng)為GEORADIUS_RO
和GEORADIUSBYMEMBER_RO
,并能安全地從設(shè)備中使用。
這兩個(gè)命令分別在 Redis 3.2.10 和 Redis 4.0.0 中引入。
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"