網(wǎng)站首頁 編程語言 正文
Redis特殊數(shù)據(jù)類型Geospatial地理空間
這是在redis 3.2版本推出的,推算地理位置的信息,兩地之間的距離,周圍方圓的人等等場(chǎng)景都可以用它實(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
更多的操作,可以自己親自試試。
原文鏈接:https://blog.csdn.net/wessonlan/article/details/124813035
相關(guān)推薦
- 2023-03-25 Python?Flask-Login模塊使用案例詳解_python
- 2023-12-13 pyinstaller打包exe時(shí)報(bào)錯(cuò)問題記錄[makespec options not valid
- 2022-11-11 iPhoneX 及以上 手機(jī)底部適配 CSS3方式
- 2022-02-27 解決No converter for XXX with preset Content-Type ‘a(chǎn)
- 2022-09-24 Go?iota關(guān)鍵字與枚舉類型實(shí)現(xiàn)原理_Golang
- 2022-10-24 React中DOM事件和狀態(tài)介紹_React
- 2023-05-12 Go異步任務(wù)解決方案之Asynq庫詳解_Golang
- 2022-02-18 RuntimeError: CUDA error: invalid device ordinal
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支