常见的地理位置相关需求有:
1, 查找附近的人
2, 显示两点距离
3, 点是否在指定范围内 (地理围栏)
Redis,MongoDB,MySQL 都已支持 geo
几种 geo 方案对比
需求 1,2 用对应的 geo 即可
需求 3 判断点是否在指定范围内实现方案 (地理围栏)
一般为 3 中情况: 1 是否在指定园内, 2 是否在矩形内, 3 是否在多边形内
对于实时性要求不是很高和数据量不是很大的应用, 利用第三方 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 树索引实现方式探索中
来源: http://www.bubuko.com/infodetail-2992335.html