亚洲最大看欧美片,亚洲图揄拍自拍另类图片,欧美精品v国产精品v呦,日本在线精品视频免费

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

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

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

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

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

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

    前言

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

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

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

    概述簡(jiǎn)介

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

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

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

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

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

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

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

    常用命令

    # 存儲(chǔ)指定的地理空間位置,可以將一個(gè)或多個(gè)經(jīng)度(longitude)、緯度(latitude)、位置名稱(chēng)(member)添加到指定的 key 中。 GEOADD key longitude latitude member [longitude latitude member ...] # 從給定的 key 里返回所有指定名稱(chēng)(member)的位置(經(jīng)度和緯度),不存在的返回 nil。 GEOPOS key member [member ...] # 返回兩個(gè)給定位置之間的距離。 GEODIST key member1 member2 [m|km|ft|mi] # 根據(jù)用戶(hù)給定的經(jīng)緯度坐標(biāo)來(lái)獲取指定范圍內(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)用場(chǎng)景

    滴滴叫車(chē)

    這里以滴滴叫車(chē)的場(chǎng)景為例,介紹下具體如何使用 GEO 命令:GEOADD 和 GEORADIUS 這兩個(gè)命令。

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

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

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

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

    例如,LBS 應(yīng)用執(zhí)行下面的命令時(shí),Redis 會(huì)根據(jù)輸入的用戶(hù)的經(jīng)緯度信息(116.054579,39.030452 ),查找以這個(gè)經(jīng)緯度為中心的 5 公里內(nèi)的車(chē)輛信息,并返回給 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號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)