常见的地理位置相关需求有: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树索引实现方式探索中