Redis特殊數(shù)據(jù)類型Geospatial地理空間
Redis特殊數(shù)據(jù)類型Geospatial地理空間
這是在redis 3.2版本推出的,推算地理位置的信息,兩地之間的距離,周圍方圓的人等等場景都可以用它實現(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
這個key里,添加了5個地方的經(jīng)緯度:上海、蘇州、北京、廣州、廣州海珠區(qū)。
二、geopos
從key里返回所有給定位置元素的位置(經(jīng)度和緯度)。
geopos china:city suzhou shanghai
返回位置的坐標(biāo)。
三、geodist
返回兩個給定位置之間的距離。
如果兩個位置之間的其中一個不存在, 那么命令返回空值。
指定單位的參數(shù) unit 必須是以下單位的其中一個:
- m 表示單位為米(默認)。
- 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)的城市。
再遠點,100km之內(nèi),還可以找到suzhou
,加上withdist
顯示出距離。
加上withcoord
可以返回經(jīng)緯度。
再加上count
,只返回我指定的數(shù)量。
georadius china:city 121.49295 31.22337 100 km withdist withcoord count 1
五、georadiusbymember
這個命令和 georadius命令一樣, 都可以找出位于指定范圍內(nèi)的元素。
但是這里不是指定中心點坐標(biāo),而是指定以哪個元素為中心點。
georadiusbymember china:city suzhou 100 km withdist
這里以元素suzhou
為中心點,找周五100km內(nèi)的其他元素。
六、geohash
一個或多個位置元素,用hash表示。
geohash china:city suzhou shanghai
返回11個字符的Geohash字符串,代表當(dāng)前經(jīng)緯度的字符串,就是換了個形式,將二維的經(jīng)緯度轉(zhuǎn)化成了一個一維的字符串。
如果上圖結(jié)構(gòu)里的2個字符串越接近,則2個位置距離也越近,這些了解即可。
geo的底層原理還是zset,我們可以使用zset命令操作geo,比如移除geo里的城市。
zrem china:city haizhuqu
更多的操作,可以自己親自試試。
以上就是Redis特殊數(shù)據(jù)類型Geospatial地理空間的詳細內(nèi)容,更多關(guān)于Redis Geospatial地理空間的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Redis鎖的過期時間小于業(yè)務(wù)的執(zhí)行時間如何續(xù)期
本文主要介紹了Redis鎖的過期時間小于業(yè)務(wù)的執(zhí)行時間如何續(xù)期,Redisson它能給Redis分布式鎖實現(xiàn)過期時間自動續(xù)期,具有一定的參考價值,感興趣的可以了解一下2024-05-05Redis 通過 RDB 方式進行數(shù)據(jù)備份與還原的方法
這篇文章主要介紹了Redis 通過 RDB 方式進行數(shù)據(jù)備份與還原,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03