?
This document uses PHP Chinese website manual Release
GEOADD key longitude latitude member [longitude latitude member ...]
自3.2.0起可用。
時間復(fù)雜度:添加每個項目的 O(log(N)),其中 N 是排序集合中元素的數(shù)量。
將指定的地理空間項目(緯度,經(jīng)度,名稱)添加到指定的鍵。數(shù)據(jù)作為一個排序集存儲在密鑰中,以便以后可以使用帶有 GEORADIUS 或 GEORADIUSBYMEMBER 命令的半徑查詢來檢索項目。
該命令采用標(biāo)準(zhǔn)格式 x,y 的參數(shù),因此經(jīng)度必須在緯度之前指定。可以索引的坐標(biāo)是有限的:非??拷鼧O點的區(qū)域不可索引。EPSG:900913 / EPSG:3785 / OSGEO:41001的具體限制如下:
有效經(jīng)度從-180到180度。
有效緯度從 -85.05112878 到 85.05112878 度。
當(dāng)用戶嘗試索引超出指定范圍的坐標(biāo)時,該命令將報告錯誤。
注意:沒有 GEODEL 命令,因為您可以使用 ZREM 來刪除元素。地理索引結(jié)構(gòu)只是一個有序集合。
排序集的填充方式是使用稱為 Geohash 的技術(shù)。緯度和經(jīng)度位被交織以形成唯一的52位整數(shù)。我們知道有排序的集合雙分?jǐn)?shù)可以表示一個52位整數(shù),而不會失去精度。
此格式允許通過檢查覆蓋整個半徑所需的1 + 8區(qū)域并丟棄半徑外的元素來進(jìn)行半徑查詢。通過計算覆蓋框的范圍來檢查區(qū)域,從排序集合評分的較低有效部分中移除足夠的位,并計算評分范圍以在每個區(qū)域的排序集合中查詢。
它只是假設(shè)地球是一個球體,因為使用的距離公式是 Haversine 公式。這個公式只適用于地球,這不是一個完美的球體。在需要通過 radius 和大多數(shù)其他應(yīng)用程序進(jìn)行查詢的社交網(wǎng)站上下文中使用引入的錯誤不是問題。然而,在最糟糕的情況下,錯誤可能高達(dá)0.5%,因此您可能需要考慮其他系統(tǒng)的錯誤關(guān)鍵應(yīng)用程序。
整數(shù)回復(fù),具體為:
添加到已排序集合的元素數(shù)量,不包括已更新分?jǐn)?shù)的元素。
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"