溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Redis Geo相關(guān)命令詳解

發(fā)布時(shí)間:2021-09-10 15:32:37 來源:億速云 閱讀:151 作者:chen 欄目:大數(shù)據(jù)

本篇內(nèi)容主要講解“Redis Geo相關(guān)命令詳解”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Redis Geo相關(guān)命令詳解”吧!


 
GEOADD

最早可用版本:3.2.0

時(shí)間復(fù)雜度:O(log(N)),N是Sorted set元素?cái)?shù)量

用法:GEOADDkey longitude latitude member [longitude latitude member …]

將指定的地理空間位置(緯度、經(jīng)度、名稱)添加到指定key中。這些數(shù)據(jù)將存儲(chǔ)到sorted set,這樣為了方便使用GEORADIUS或GEORADIUSBYMEMBER命令。

該命令采用標(biāo)準(zhǔn)格式參數(shù)x,y,所以經(jīng)度必須在緯度之前。輸入的坐標(biāo)有如下限制:

  • 有效的經(jīng)度從-180度到180度

  • 有效的緯度從-85.05112878度到85.05112878度

當(dāng)坐標(biāo)位置超出上述指定范圍時(shí),該命令返回一個(gè)錯(cuò)誤。

 
GEODIST

最早可用版本:3.2.0

時(shí)間復(fù)雜度:O(log(N))

用法:GEODIST key member1 member2 [unit]

返回兩個(gè)給定位置之間的距離。

如果兩個(gè)位置之間的其中一個(gè)不存在,那么命令返回空值。

指定單位的參數(shù)unit必須是以下其中一個(gè):

  • m表示單位為米

  • km表示單位為千米

  • mi表示單位為英里

  • ft表示單位為英尺

如果用戶沒有顯示指定單位參數(shù),默認(rèn)使用米作為單位。

GEODIST命令在計(jì)算距離時(shí)會(huì)假設(shè)地球?yàn)橥昝狼蛐危瑯O限情況下,這一假設(shè)最大會(huì)造成0.5%的誤差。

 
GEOHASH

最早可用版本:3.2.0

時(shí)間復(fù)雜度:O(log(N))

返回一個(gè)或多個(gè)元素位置的Geohash表示。

用法:GEOHASH key member [member …]

返回一個(gè)或多個(gè)位置元素的Geohash表示。

通常,Redis使用Geohash技術(shù)的變體表示元素的位置,位置使用52位整數(shù)進(jìn)行編碼。由于編碼和解碼過程的初始最大和最小坐標(biāo)不同,所以編碼也不是標(biāo)準(zhǔn)的編碼方式。

該命令返回11個(gè)字符的Geohash字符串,和內(nèi)部的52位表示方法相比沒有精度的損失。返回的Geohash有以下屬性:

  1. 它可以移除右邊的字符以縮短長度,這只會(huì)導(dǎo)致精度的損失,但仍指向同一區(qū)域

  2. 它可以在heohash.org網(wǎng)站使用,地址是http://geohash.org/

  3. 前綴相似的字符串指向的位置離得很近,但這不代表前綴不同的字符串就離得很遠(yuǎn)

 
GEOPOS

最早可用版本:3.2.0

時(shí)間復(fù)雜度:O(log(N))

用法:GEOPOS key member [member …]

返回指定key中的指定位置信息。

 
GEORADIUS

最早可用版本:3.2.0

時(shí)間復(fù)雜度:O(N+log(M)),N是半徑區(qū)域內(nèi)元素?cái)?shù)量,M是指定key中元素?cái)?shù)量

用法:GEORADIUS key longitude latitude radiusm|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH][COUNT count] [ASC|DESC] [STORE key][STOREDIST key]

以給定經(jīng)緯度為中心,返回鍵包含的位置元素與中心距離不超過最大距離的所有位置元素。

命令額外選項(xiàng):

  • WITHDIST:在返回位置元素的同時(shí),將位置元素與中心的距離也一并返回,單位與用戶給定距離的單位一直

  • WITHCOORD:將位置元素的經(jīng)度和緯度也一并返回

  • WITHHASH:以52位有符號整數(shù)的形式,返回位置元素經(jīng)過原始geohash編碼的有序集合分值。這個(gè)選項(xiàng)主要用于底層應(yīng)用或調(diào)試。

命令默認(rèn)返回結(jié)果未排序,可以指定ASC或DESC按距離排序。

COUNT表示指定返回元素的數(shù)量,如果不指定則返回全部符合的元素。

當(dāng)GEORADIUS和GEORADIUSBYMEMBER命令有了STORE和STOREDIST參數(shù)時(shí),這兩命令被標(biāo)記成了寫命令。在集群中,如果設(shè)置了READONLY,它們將被重定向到主節(jié)點(diǎn),即使它們沒有做寫操作。但為了解決這個(gè)問題,在Redis4.0引入了這兩個(gè)命令的變種,分別是GEORADIUS_RO和GEORADIUSBYMEMBER_RO。

 
GEORADIUSBYMEMBER

最早可用版本:3.2.0

時(shí)間復(fù)雜度:O(N+log(M)),N是半徑區(qū)域內(nèi)元素?cái)?shù)量,M是指定key中元素?cái)?shù)量

用法:GEORADIUSBYMEMBER key member radiusm|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH][COUNT count] [ASC|DESC] [STORE key][STOREDIST key]

這個(gè)命令和GEORADIUS命令一樣,都可以找出位置范圍內(nèi)的元素,但指定中心點(diǎn)的方式不同,該命令直接指定key中的元素作為中心,而不像GEORADIUS一樣指定經(jīng)緯度。

到此,相信大家對“Redis Geo相關(guān)命令詳解”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI