Redis特殊數(shù)據(jù)類型Geospatial地理空間
Redis特殊數(shù)據(jù)類型Geospatial地理空間
這是在redis 3.2版本推出的,推算地理位置的信息,兩地之間的距離,周圍方圓的人等等場景都可以用它實(shí)現(xiàn)。
一、geoadd
將指定的地理空間位置(緯度、經(jīng)度、名稱)添加到指定的key中。
這里可以借助網(wǎng)上的一些查詢經(jīng)緯度的工具來獲取數(shù)據(jù)。
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這個(gè)key里,添加了5個(gè)地方的經(jīng)緯度:上海、蘇州、北京、廣州、廣州海珠區(qū)。

二、geopos
從key里返回所有給定位置元素的位置(經(jīng)度和緯度)。
geopos china:city suzhou shanghai
返回位置的坐標(biāo)。

三、geodist
返回兩個(gè)給定位置之間的距離。
如果兩個(gè)位置之間的其中一個(gè)不存在, 那么命令返回空值。
指定單位的參數(shù) unit 必須是以下單位的其中一個(gè):
- m 表示單位為米(默認(rèn))。
- km 表示單位為千米。
- mi 表示單位為英里。
- ft 表示單位為英尺。
geodist china:city suzhou shanghai km

四、georadius
以給定的經(jīng)緯度為中心, 返回鍵包含的位置元素當(dāng)中, 與中心的距離不超過給定最大距離的所有位置元素。
georadius china:city 121.49295 31.22337 30 km
我以 上海黃浦區(qū)的坐標(biāo)121.49295 31.22337為中心,尋找30km之內(nèi)的城市。

再遠(yuǎn)點(diǎn),100km之內(nèi),還可以找到suzhou,加上withdist顯示出距離。
加上withcoord可以返回經(jīng)緯度。

再加上count,只返回我指定的數(shù)量。
georadius china:city 121.49295 31.22337 100 km withdist withcoord count 1

五、georadiusbymember
這個(gè)命令和 georadius命令一樣, 都可以找出位于指定范圍內(nèi)的元素。
但是這里不是指定中心點(diǎn)坐標(biāo),而是指定以哪個(gè)元素為中心點(diǎn)。
georadiusbymember china:city suzhou 100 km withdist
這里以元素suzhou為中心點(diǎn),找周五100km內(nèi)的其他元素。

六、geohash
一個(gè)或多個(gè)位置元素,用hash表示。
geohash china:city suzhou shanghai

返回11個(gè)字符的Geohash字符串,代表當(dāng)前經(jīng)緯度的字符串,就是換了個(gè)形式,將二維的經(jīng)緯度轉(zhuǎn)化成了一個(gè)一維的字符串。
如果上圖結(jié)構(gòu)里的2個(gè)字符串越接近,則2個(gè)位置距離也越近,這些了解即可。
geo的底層原理還是zset,我們可以使用zset命令操作geo,比如移除geo里的城市。
zrem china:city haizhuqu

更多的操作,可以自己親自試試。
以上就是Redis特殊數(shù)據(jù)類型Geospatial地理空間的詳細(xì)內(nèi)容,更多關(guān)于Redis Geospatial地理空間的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
redis中opsForList().range()的使用方法詳解
這篇文章主要給大家介紹了關(guān)于redis中opsForList().range()的使用方法,文中通過實(shí)例代碼以及圖文介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用redis具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-03-03
Redis高效率原因及數(shù)據(jù)結(jié)構(gòu)分析
這篇文章主要為大家詳細(xì)的介紹了Redis高效的原因以及分析了Redis高效的數(shù)據(jù)結(jié)構(gòu),有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-09-09
淺談內(nèi)存耗盡后Redis會(huì)發(fā)生什么
這篇文章主要介紹了淺談內(nèi)存耗盡后Redis會(huì)發(fā)生什么,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
一起raid數(shù)據(jù)恢復(fù)及回遷成功的案例
這篇文章主要介紹了一起raid數(shù)據(jù)恢復(fù)及回遷成功的案例,需要的朋友可以參考下2017-04-04
高并發(fā)下Redis如何保持?jǐn)?shù)據(jù)一致性(避免讀后寫)
本文主要介紹了高并發(fā)下Redis如何保持?jǐn)?shù)據(jù)一致性(避免讀后寫),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
Redis緩存lettuce更換為Jedis的實(shí)現(xiàn)步驟
在springboot中引入spring-boot-starter-data-redis依賴時(shí),默認(rèn)使用的是lettuce,如果不想使用lettuce而是使用Jedis連接池,本文主要介紹了Redis緩存lettuce更換為Jedis的實(shí)現(xiàn)步驟,感興趣的可以了解一下2024-08-08
python腳本實(shí)現(xiàn)Redis未授權(quán)批量提權(quán)
這篇文章主要給大家介紹了關(guān)于利用python腳本實(shí)現(xiàn)redis未授權(quán)批量提權(quán)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-09-09
windows下通過批處理腳本啟動(dòng)redis的操作
本文主要給大家介紹了windows下通過批處理腳本啟動(dòng)redis的操作,windows下redis啟動(dòng),需要進(jìn)入redis安裝目錄,然后shift+右鍵,選擇“在此處打開命令窗口”,然后輸入redis-server.exe redis.conf,就可以啟動(dòng)redis了,文中有詳細(xì)的圖文參考,感興趣的朋友可以參考下2023-12-12

