Redis學習筆記 - 16.Redis 高級功能-GEO

介紹

Redis3.2版本提供了GEO(地理信息定位)功能,支持存儲地理位置信息用來實現諸如附近位置、搖一搖這類依賴於地理位置信息的功能,對於需要實現這些功能的開發者來說是一大福音

因爲GEO的底層實現是zset,所以支持zset的相關命令。

命令

增加地理位置信息

geoadd key longitude latitude member [longitude latitude member ...]

longitude、latitude、member分別是該地理位置的經度、緯度、成員。

獲取地理位置信息

geopos key member [member ...]

獲取兩個地理位置的距離

geodist key member1 member2 [unit]

其中unit代表返回結果的單位,包含以下四種:

  • m(meters)代表米。
  • km(kilometers)代表公里。
  • mi(miles)代表英里。
  • ft(feet)代表尺。

獲取指定位置範圍內的地理信息位置集合

georadius key longitude latitude radiusm|km|ft|mi [withcoord] [withdist] [withhash] [COUNT count] [asc|desc] [store key] [storedist key]
georadiusbymember key member radiusm|km|ft|mi [withcoord] [withdist] [withhash] [COUNT count] [asc|desc] [store key] [storedist key]

georadius和georadiusbymember兩個命令的作用是一樣的,都是以一個地理位置爲中心算出指定半徑內的其他地理信息位置,不同的是georadius命令的中心位置給出了具體的經緯度,georadiusbymember只需給出成員即可。其中radiusm|km|ft|mi是必需參數,指定了半徑(帶單位),這兩個命令有很多可選參數,如下所示:

  • withcoord:返回結果中包含經緯度。
  • withdist:返回結果中包含離中心節點位置的距離。
  • withhash:返回結果中包含geohash。
  • COUNT count:指定返回結果的數量。
  • asc | desc:返回結果按照離中心節點的距離做升序或者降序。
  • store key:將返回結果的地理位置信息保存到指定鍵。
  • storedist key:將返回結果離中心節點的距離保存到指定鍵。

獲取geohash

geohash key member [member ...]

geohash有如下特點:

  • GEO的數據類型爲zset,Redis將所有地理位置信息的geohash存放在zset中。
  • 字符串越長,表示的位置更精確。
geohash長度 精確度
1 2,500
2 630
3 78
4 20
5 2.4
6 0.61
7 0.076
8 0.019
9 0.002
  • 兩個字符串越相似,它們之間的距離越近,Redis利用字符串前綴匹配算法實現相關的命令。
  • geohash編碼和經緯度是可以相互轉換的。

刪除地理位置信息

zrem key member

GEO沒有提供刪除成員的命令,但是因爲GEO的底層實現是zset,所以可以借用zrem命令實現對地理位置信息的刪除。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章