Redis GEO 特性在 LBS 中的應用總結

2021-09-16 12:48:16 字數 1397 閱讀 4591

lbs(location based service),基於位置的服務。

redis 是最熱門的 nosql 資料庫之一,它的最大特點就是快。

所以在 lbs 這種需要大量寫入和查詢的應用場景中,用它來儲存使用者的地理位置資訊最適合不過了。

redis 的 geo 是 3.2 版本的新特性。這個功能可以將使用者給定的地理位置資訊儲存起來, 並對這些資訊進行操作。

ps:關於三種nosql資料庫這裡我也做了調研,其中mongodb最大的特點是靈活,因為其資料是以json的格式儲存,所以字段隨時可以增加或減少;redis的特點是快,適合單一的,簡單的,大量資料的儲存;hbase我沒有做深入研究,它的特點是大,適合做離線快取。在處理社交這種關係複雜的資料儲存時,依然還是需要用mysql這種關係型資料庫,nosql並不能完全替代。

目前 redis 支援以下 6 個 geo 的相關操作

geoadd location-set longitude latitude member [longitude latitude member ...]

示例redis> geoadd hangzhou 120.0919500000 30.3219600000 xihu

geopos key member [member ...]

示例redis> geopos hangzhou sandun xixi xihu

geodist location-set location-x location-y [unit]

其中 unit 引數是距離單位,可選填

示例redis> geodist hangzhou xihu xixi m

這個功能很有用,可以用來查詢周邊的點

georadius location-set longitude latitude radius m|km|ft|mi [withcoord] [withdist] [asc|desc] [count count]

其中:radius表示範圍距離,距離單位是 m|km|ft|mi

可選引數:

示例redis> georadius hangzhou 120.0919500000 30.3219600000 10 km

georadiusbymember key member radius [m|km|ft|mi] [withcoord] [withdist] [asc|desc] [withhash] [count count]

和 georadius 一樣,只是傳入的是member名,不是座標了

redis> georadius hangzhou xihu 10 km

C 在列表中按特性查詢

宣告 閱讀本文需要 c 泛型和委託的基本知識。列表在程式設計過程中應用極為廣泛,而按照索引來查詢顯然不能滿足所有需求,c net 提供了很好的內建方法來方便程式設計師編寫按照特性來搜尋列表中的成員的 下面我將介紹該方法。在 list 類中,有幾個方 findindex findall find fi...

BREW中位置資訊的獲得(LBS應用)

iposdet介面可以直接獲得經緯度等相關資訊,應用將這些資訊傳遞給伺服器與gis系統配合使用就可以開發出各種豐富多彩的應用了,iposdet的使用示例如下 create the instance for posdet ishell createinstance pi a.m pishell,aee...

C 中的特性

c 中的特性,允許向程式的程式集增加元資料,用於儲存程式結構資訊。obsolete特性標記方法已被棄用。並在 編譯時,顯示警告資訊。obsolete 該方法已被棄用 static void oldmethod conditional特性,使用或取消方法的呼叫,執行依賴於指定的預處理識別符號。cond...