網站首頁 編程語言 正文
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
更多的操作,可以自己親自試試。
原文鏈接:https://blog.csdn.net/wessonlan/article/details/124813035
相關推薦
- 2022-09-18 Go實現文件分片上傳_Golang
- 2022-10-15 python?實現syslog?服務器的詳細過程_python
- 2023-01-12 python可迭代類型遍歷過程中數據改變會不會報錯_python
- 2022-08-26 一篇文章學會GO語言中的變量_Golang
- 2023-01-26 Kotlin協程Channel源碼示例淺析_Android
- 2022-08-05 C++詳細講解模擬實現位圖和布隆過濾器的方法_C 語言
- 2022-05-11 React中的Refs屬性你來了解嗎_React
- 2022-12-03 C++實現重載矩陣的部分運算符_C 語言
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支