站長資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        Redis特殊數(shù)據(jù)類型之Geospatial

        在之前的《Redis特殊數(shù)據(jù)類型之stream》文章中給大家介紹了關(guān)于數(shù)據(jù)類型stream的相關(guān)內(nèi)容,本篇文章給大家?guī)砹薘edis中的另一種數(shù)據(jù)類型Geospatial,下面一起來看一下,希望對大家有幫助。

        Redis特殊數(shù)據(jù)類型之Geospatial

        千萬級數(shù)據(jù)并發(fā)如何處理?進入學(xué)習(xí)

        推薦學(xué)習(xí):Redis視頻教程

        前言

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

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

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

        概述簡介

        著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。

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

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

        內(nèi)部實現(xiàn)

        GEO 本身并沒有設(shè)計新的底層數(shù)據(jù)結(jié)構(gòu),而是直接使用了 Sorted Set 集合類型。

        GEO 類型使用 GeoHash 編碼方法實現(xiàn)了經(jīng)緯度到 Sorted Set 中元素權(quán)重分數(shù)的轉(zhuǎn)換,這其中的兩個關(guān)鍵機制就是「對二維地圖做區(qū)間劃分」和「對區(qū)間進行編碼」。一組經(jīng)緯度落在某個區(qū)間后,就用區(qū)間的編碼值來表示,并把編碼值作為 Sorted Set 元素的權(quán)重分數(shù)。

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

        常用命令

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

        應(yīng)用場景

        滴滴叫車

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

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

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

        GEOADD cars:locations 116.034579 39.030452 33
        登錄后復(fù)制

        當用戶想要尋找自己附近的網(wǎng)約車時,LBS 應(yīng)用就可以使用 GEORADIUS 命令。

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

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

        推薦學(xué)習(xí):Redis視頻教程

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
        主站蜘蛛池模板: 精品人妻va出轨中文字幕| 99久久国产热无码精品免费 | 久久精品国产影库免费看| 色婷婷噜噜久久国产精品12p| 亚洲午夜精品一区二区| 国产精品高清一区二区三区 | 精品一区二区在线观看| 亚洲AV无码精品色午夜果冻不卡 | 欧美精品1区2区| 国产精品区一区二区三在线播放 | 色欲久久久天天天综合网精品| 黑人巨茎精品欧美一区二区| 日韩精品成人一区二区三区| 国产女人精品视频国产灰线| 久久亚洲私人国产精品| 人妻无码久久精品| 精品亚洲欧美中文字幕在线看| 四虎精品成人免费观看| 九九99精品久久久久久| 丰满人妻熟妇乱又仑精品| 人人妻人人澡人人爽人人精品97 | 亚洲国产综合精品中文第一区 | 亚洲精品高清视频| 精品免费久久久久久久| 最新精品国偷自产在线| 日韩精品在线播放| 欧美精品福利在线视频| 精品国产污污免费网站入口在线| 国产精品福利在线观看免费不卡| 桃花岛精品亚洲国产成人| 欧美+亚洲+精品+三区| 久久精品国产只有精品2020| 国产亚洲精品va在线| 精品国产福利第一区二区三区| 国产精品三级在线观看无码| 国产精品igao视频网| 99久久精品国产麻豆| 欧美精品/日韩精品/国产精品| 91久久精品视频| 国产精品一区在线观看你懂的| 国产成人亚洲精品91专区手机|