附近的商家如何加载¶
一、场景¶
1000 万商家,按经纬度,找附近 5 公里。
二、方案¶
1. Redis GEO¶
Redis 自带 GEO:
原理¶
- 底层是 ZSet。
- geohash 编码。
- 范围查。
优点¶
- 简单。
- 快。
缺点¶
- 范围查不够精确。
- 大数据量可能慢。
三、方案二:Elasticsearch¶
ES 支持 geo_point:
查询:
优点¶
- 支持排序、过滤。
- 大数据量。
缺点¶
- 重。
四、方案三:geohash + 数据库¶
geohash 把区域编码成字符串,前缀匹配。
查前缀相同的。
五、怎么选¶
- 简单:Redis GEO。
- 复杂:ES。
- 1000 万:Redis + ES 混合。
一句话
Redis GEO 简单,ES 适合大数据量和复杂查询。