常見的地理位置相關需求有:html
一、查找附近的人java
二、顯示兩點距離mysql
三、點是否在指定範圍內(地理圍欄)web
redis、MongoDB、mysql都已支持georedis
幾種geo方案對比sql
https://blog.csdn.net/varyall/article/details/80308426mongodb
需求一、2用對應的geo便可api
需求3判斷點是否在指定範圍內實現方案(地理圍欄)緩存
通常爲3中狀況:1是否在指定園內,2是否在矩形內,3是否在多邊形內ide
https://blog.csdn.net/u012898245/article/details/79450433
https://blog.csdn.net/Deepak192/article/details/79402694
對於實時性要求不是很高和數據量不是很大的應用,利用第三方api就能夠了
好比百度:https://lbs.amap.com/api/webservice/guide/api/geofence_service
redis geohash原理
https://www.jianshu.com/p/c9801c4f9f6a
redis、mongodb幾點對比:
一、redis單key、單value存儲最大512m,LBS應用常常會產生大量經緯度數據,極可能超過該值,須要額外作一些處理來拆分存儲。mongodb無此問題
二、redis主要是做爲緩存,對數據的處理能力比不上mongodb
因此geo選擇mongdb>redis>mysql
附redis、mongdb、mysql對比
http://www.javashuo.com/article/p-ghhocnro-dh.html
地理圍欄R樹索引實現方式探索中