常见的地理位置相关需求有:
1、查找附近的人
2、显示两点距离
3、点是否在指定范围内(地理围栏)
redis、MongoDB、mysql都已支持geo
几种geo方案对比
https://blog.csdn.net/varyall/article/details/80308426
需求1、2用对应的geo即可
需求3判断点是否在指定范围内实现方案(地理围栏)
一般为3中情况:1是否在指定园内,2是否在矩形内,3是否在多边形内
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几点对比:
1、redis单key、单value存储最大512m,LBS应用经常会产生大量经纬度数据,很可能超过该值,需要额外做一些处理来拆分存储。mongodb无此问题
2、redis主要是作为缓存,对数据的处理能力比不上mongodb
所以geo选择mongdb>redis>mysql
附redis、mongdb、mysql对比
https://www.cnblogs.com/klb561/p/9085772.html
地理围栏R树索引实现方式探索中