首頁 > 軟體

Redis特殊資料型別Geospatial地理空間

2022-05-31 14:02:14

Redis特殊資料型別Geospatial地理空間

這是在redis 3.2版本推出的,推算地理位置的資訊,兩地之間的距離,周圍方圓的人等等場景都可以用它實現。

一、geoadd

將指定的地理空間位置(緯度、經度、名稱)新增到指定的key中。

這裡可以藉助網上的一些查詢經緯度的工具來獲取資料。

geoadd china:city 121.472644 31.231706 shanghai
geoadd china:city 120.619585 31.299379 suzhou
geoadd china:city 116.405285 39.904989 beijing
geoadd china:city 113.280637 23.125178 guangzhou 113.26197 23.10379 haizhuqu

china:city這個key裡,新增了5個地方的經緯度:上海、蘇州、北京、廣州、廣州海珠區。

二、geopos

從key裡返回所有給定位置元素的位置(經度和緯度)。

geopos china:city suzhou shanghai

返回位置的座標。

三、geodist

返回兩個給定位置之間的距離。

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

指定單位的引數 unit 必須是以下單位的其中一個:

  • m 表示單位為米(預設)。
  • km 表示單位為千米。
  • mi 表示單位為英里。
  • ft 表示單位為英尺。
geodist china:city suzhou shanghai km

四、georadius

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

georadius china:city 121.49295 31.22337 30 km

我以 上海黃浦區的座標121.49295 31.22337為中心,尋找30km之內的城市。

再遠點,100km之內,還可以找到suzhou,加上withdist顯示出距離。

加上withcoord可以返回經緯度。

再加上count,只返回我指定的數量。

georadius china:city 121.49295 31.22337 100 km withdist withcoord count 1

五、georadiusbymember

這個命令和 georadius命令一樣, 都可以找出位於指定範圍內的元素。

但是這裡不是指定中心點座標,而是指定以哪個元素為中心點。

georadiusbymember china:city suzhou 100 km withdist

這裡以元素suzhou為中心點,找週五100km內的其他元素。

六、geohash

一個或多個位置元素,用hash表示。

geohash china:city suzhou shanghai

返回11個字元的Geohash字串,代表當前經緯度的字串,就是換了個形式,將二維的經緯度轉化成了一個一維的字串。

如果上圖結構裡的2個字串越接近,則2個位置距離也越近,這些瞭解即可。

geo的底層原理還是zset,我們可以使用zset命令操作geo,比如移除geo裡的城市。

zrem china:city haizhuqu

更多的操作,可以自己親自試試。

以上就是Redis特殊資料型別Geospatial地理空間的詳細內容,更多關於Redis Geospatial地理空間的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com