?
本文檔使用 PHP中文網(wǎng)手冊 發(fā)布
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),并且與中心的最大距離(半徑)一致。
本手冊頁還涵蓋了GEORADIUS_RO
和GEORADIUSBYRANGE_RO
變種(參見下面的更多信息部分)。
此命令的常見用例是檢索指定點(diǎn)附近的地理空間項(xiàng)目,并且不超過指定數(shù)量的米(或其他單位)。例如,這允許向附近的應(yīng)用程序的移動(dòng)用戶建議位置。
半徑以下列單位之一指定:
m 為米。
km 為千米。
mi 為英里。
ft 為英尺。
該命令有選擇地使用以下選項(xiàng)返回附加信息:
WITHDIST
:還要返回指定中心返回物品的距離。距離以與指定為命令的半徑參數(shù)的單位相同的單位返回。
WITHCOORD
:還返回匹配項(xiàng)目的經(jīng)度,緯度坐標(biāo)。
WITHHASH
:還以52位無符號整數(shù)的形式返回項(xiàng)目的原始 geohash 編碼的有序集合分?jǐn)?shù)。這只對低級別的黑客或調(diào)試很有用,對于普通用戶來說這很有趣。
該命令的默認(rèn)設(shè)置是返回未排序的項(xiàng)目。使用以下兩個(gè)選項(xiàng)可以調(diào)用兩種不同的排序方法:
ASC
:將返回的項(xiàng)目從最近的到最遠(yuǎn)的,相對于中心排序。
DESC
:從最遠(yuǎn)到最近的相對于中心的返回項(xiàng)目排序。
默認(rèn)情況下會返回所有匹配的項(xiàng)目。通過使用 COUNT <count>
選項(xiàng),可以將結(jié)果限制為前 N 個(gè)匹配項(xiàng)。但是請注意,在內(nèi)部,命令需要執(zhí)行與匹配指定區(qū)域的項(xiàng)目數(shù)量成比例的努力,因此,COUNT
即使只返回幾個(gè)結(jié)果,使用非常小的選項(xiàng)查詢非常大的區(qū)域也可能會很慢。另一方面,COUNT
如果通常只使用第一個(gè)結(jié)果,則可以成為減少帶寬使用的非常有效的方法。
陣列回復(fù),具體為:
沒有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)目的名稱。其他信息按以下順序作為子數(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
選擇,他們在技術(shù)上標(biāo)記為在 Redis 的命令表寫入命令。因?yàn)檫@個(gè)原因,只讀從屬會標(biāo)記它們,即使連接處于只讀模式,Redis 集群從屬也會將它們重定向到主實(shí)例(請參閱 Redis 集群的 READONLY 命令)。
打破與過去的兼容性被認(rèn)為是被拒絕的,至少對于 Redis 4.0 來說是這樣,所以添加了兩個(gè)只讀的命令變體。他們完全像原來的命令,但拒絕STORE
和STOREDIST
選項(xiàng)。這兩個(gè)變量被稱為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"