本篇內容主要講解“Redis Geo相關命令詳解”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Redis Geo相關命令詳解”吧!
最早可用版本:3.2.0
時間復雜度:O(log(N)),N是Sorted set元素數量
用法:GEOADDkey longitude latitude member [longitude latitude member …]
將指定的地理空間位置(緯度、經度、名稱)添加到指定key中。這些數據將存儲到sorted set,這樣為了方便使用GEORADIUS或GEORADIUSBYMEMBER命令。
該命令采用標準格式參數x,y,所以經度必須在緯度之前。輸入的坐標有如下限制:
有效的經度從-180度到180度
有效的緯度從-85.05112878度到85.05112878度
當坐標位置超出上述指定范圍時,該命令返回一個錯誤。
最早可用版本:3.2.0
時間復雜度:O(log(N))
用法:GEODIST key member1 member2 [unit]
返回兩個給定位置之間的距離。
如果兩個位置之間的其中一個不存在,那么命令返回空值。
指定單位的參數unit必須是以下其中一個:
m表示單位為米
km表示單位為千米
mi表示單位為英里
ft表示單位為英尺
如果用戶沒有顯示指定單位參數,默認使用米作為單位。
GEODIST命令在計算距離時會假設地球為完美球形,極限情況下,這一假設最大會造成0.5%的誤差。
最早可用版本:3.2.0
時間復雜度:O(log(N))
返回一個或多個元素位置的Geohash表示。
用法:GEOHASH key member [member …]
返回一個或多個位置元素的Geohash表示。
通常,Redis使用Geohash技術的變體表示元素的位置,位置使用52位整數進行編碼。由于編碼和解碼過程的初始最大和最小坐標不同,所以編碼也不是標準的編碼方式。
該命令返回11個字符的Geohash字符串,和內部的52位表示方法相比沒有精度的損失。返回的Geohash有以下屬性:
它可以移除右邊的字符以縮短長度,這只會導致精度的損失,但仍指向同一區域
它可以在heohash.org網站使用,地址是http://geohash.org/
前綴相似的字符串指向的位置離得很近,但這不代表前綴不同的字符串就離得很遠
最早可用版本:3.2.0
時間復雜度:O(log(N))
用法:GEOPOS key member [member …]
返回指定key中的指定位置信息。
最早可用版本:3.2.0
時間復雜度:O(N+log(M)),N是半徑區域內元素數量,M是指定key中元素數量
用法:GEORADIUS key longitude latitude radiusm|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH][COUNT count] [ASC|DESC] [STORE key][STOREDIST key]
以給定經緯度為中心,返回鍵包含的位置元素與中心距離不超過最大距離的所有位置元素。
命令額外選項:
WITHDIST:在返回位置元素的同時,將位置元素與中心的距離也一并返回,單位與用戶給定距離的單位一直
WITHCOORD:將位置元素的經度和緯度也一并返回
WITHHASH:以52位有符號整數的形式,返回位置元素經過原始geohash編碼的有序集合分值。這個選項主要用于底層應用或調試。
命令默認返回結果未排序,可以指定ASC或DESC按距離排序。
COUNT表示指定返回元素的數量,如果不指定則返回全部符合的元素。
當GEORADIUS和GEORADIUSBYMEMBER命令有了STORE和STOREDIST參數時,這兩命令被標記成了寫命令。在集群中,如果設置了READONLY,它們將被重定向到主節點,即使它們沒有做寫操作。但為了解決這個問題,在Redis4.0引入了這兩個命令的變種,分別是GEORADIUS_RO和GEORADIUSBYMEMBER_RO。
最早可用版本:3.2.0
時間復雜度:O(N+log(M)),N是半徑區域內元素數量,M是指定key中元素數量
用法:GEORADIUSBYMEMBER key member radiusm|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH][COUNT count] [ASC|DESC] [STORE key][STOREDIST key]
這個命令和GEORADIUS命令一樣,都可以找出位置范圍內的元素,但指定中心點的方式不同,該命令直接指定key中的元素作為中心,而不像GEORADIUS一樣指定經緯度。
到此,相信大家對“Redis Geo相關命令詳解”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。