站長資訊網
        最全最豐富的資訊網站

        Redis特殊數據類型之Geospatial

        在之前的《Redis特殊數據類型之stream》文章中給大家介紹了關于數據類型stream的相關內容,本篇文章給大家帶來了Redis中的另一種數據類型Geospatial,下面一起來看一下,希望對大家有幫助。

        Redis特殊數據類型之Geospatial

        千萬級數據并發如何處理?進入學習

        推薦學習:Redis視頻教程

        前言

        我們都知道 Redis 提供了豐富的數據類型,特殊的有四種:BitMap、HyperLogLog、Geospatial、Stream。

        今天我們就來詳細的聊聊 Redis 這四種特殊的數據類型之一 Geospatial;

        應用場景:存儲地理位置信息的場景,比如滴滴叫車;

        概述簡介

        著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

        Redis Geospatial 是 Redis 3.2 版本新增的數據類型,主要用于存儲地理位置信息,并對存儲的信息進行操作。

        在日常生活中,我們越來越依賴搜索 “附近的餐館”、在打車軟件上叫車,這些都離不開基于位置信息服務(Location-Based Service,LBS)的應用。LBS 應用訪問的數據是和人或物關聯的一組經緯度信息,而且要能查詢相鄰的經緯度范圍,GEO 就非常適合應用在 LBS 服務的場景中。

        內部實現

        GEO 本身并沒有設計新的底層數據結構,而是直接使用了 Sorted Set 集合類型。

        GEO 類型使用 GeoHash 編碼方法實現了經緯度到 Sorted Set 中元素權重分數的轉換,這其中的兩個關鍵機制就是「對二維地圖做區間劃分」和「對區間進行編碼」。一組經緯度落在某個區間后,就用區間的編碼值來表示,并把編碼值作為 Sorted Set 元素的權重分數。

        這樣一來,我們就可以把經緯度保存到 Sorted Set 中,利用 Sorted Set 提供的“按權重進行有序范圍查找”的特性,實現 LBS 服務中頻繁使用的“搜索附近”的需求。

        常用命令

        # 存儲指定的地理空間位置,可以將一個或多個經度(longitude)、緯度(latitude)、位置名稱(member)添加到指定的 key 中。 GEOADD key longitude latitude member [longitude latitude member ...] # 從給定的 key 里返回所有指定名稱(member)的位置(經度和緯度),不存在的返回 nil。 GEOPOS key member [member ...] # 返回兩個給定位置之間的距離。 GEODIST key member1 member2 [m|km|ft|mi] # 根據用戶給定的經緯度坐標來獲取指定范圍內的地理位置集合。 GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]
        登錄后復制

        應用場景

        滴滴叫車

        這里以滴滴叫車的場景為例,介紹下具體如何使用 GEO 命令:GEOADD 和 GEORADIUS 這兩個命令。

        假設車輛 ID 是 33,經緯度位置是(116.034579,39.030452),我們可以用一個 GEO 集合保存所有車輛的經緯度,集合 key 是 cars:locations。

        執行下面的這個命令,就可以把 ID 號為 33 的車輛的當前經緯度位置存入 GEO 集合中:

        GEOADD cars:locations 116.034579 39.030452 33
        登錄后復制

        當用戶想要尋找自己附近的網約車時,LBS 應用就可以使用 GEORADIUS 命令。

        例如,LBS 應用執行下面的命令時,Redis 會根據輸入的用戶的經緯度信息(116.054579,39.030452 ),查找以這個經緯度為中心的 5 公里內的車輛信息,并返回給 LBS 應用。

        GEORADIUS cars:locations 116.054579 39.030452 5 km ASC COUNT 10
        登錄后復制

        推薦學習:Redis視頻教程

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 少妇亚洲免费精品| 精品人妻中文av一区二区三区| 亚洲精品无码MV在线观看| 欧美国产日韩精品| 精品无码久久久久久尤物| 亚洲av午夜精品一区二区三区| 国产成人精品久久亚洲高清不卡 国产成人精品久久亚洲高清不卡 国产成人精品久久亚洲 | 精品少妇一区二区三区在线| 国产香蕉精品视频在| 久久精品中文无码资源站| 亚洲国产成人久久精品99| 国产精品综合久久第一页| 亚洲国产精品久久久久久| 国产成人精品AA毛片| 老司机亚洲精品影院| 亚洲欧美日韩精品专区| 久久精品无码免费不卡| 国产精品自产拍在线18禁| 91精品国产高清久久久久久91| 久草视频在线这里精品| 国产精品大白天新婚身材| 国产成人精品优优av| 精品爆乳一区二区三区无码av| 久热这里只有精品12| 老司机性色福利精品视频| 欧美精品v欧洲精品| 少妇人妻无码精品视频app| 亚洲精品无码国产| 亚洲国产精品一区二区第一页 | 亚洲国产精品第一区二区| 国产精品亚洲专区在线观看| 国产成人精品久久二区二区| 2022国产精品福利在线观看| 精品熟女少妇av免费久久| 精品国产一区二区三区色欲| 久久亚洲国产成人精品性色| 久久国产免费观看精品3| 精品福利视频一区二区三区| 91国内外精品自在线播放| 国产精品福利在线播放| 日韩精品成人一区二区三区|